LINUX.ORG.RU

История изменений

Исправление beastie, (текущая версия) :

Интерфейс описывает поведение.

На пальцах – например что-то что может куда-то писать → т.е. «писатель» io.Writer

type Writer interface {
	Write(p []byte) (n int, err error)
}

будет описывать любую структуру умеющую писать. А в частности любую структуру имеющую метод Write(p []byte) (n int, err error)

Таким образом ты абстрагируешься от конкретного типа и вместо зоопарка

func writeToFile(f *os.File) error
func writeToBuf(b *bytes.Buffer) error
func writeToSocket(n *net.Conn) error

указываешь только поведение, независимое от конкретного типа:

func writeTo(w io.Writer) error

Ибо и os.File и bytes.Buffer и net.Conn и ещё 3000 десятков других структур могут быть «писателем».

Исправление beastie, :

Интерфейс описывает поведение.

На пальцах – например что-то что может куда-то писать → т.е. «писатель» io.Writer

type Writer interface {
	Write(p []byte) (n int, err error)
}

будет описывать любую структуру умеющую писать. А в частности любую структуру имеющую метод Write(p []byte) (n int, err error)

Таким образом ты абстрагируешься от конкретного типа и вместо зоопарка

func writeToFile(f *os.File) error
func writeToBuf(b *bytes.Buffer) error
func writeToSocket(n *net.Conn) error

указываешь только поведение, независимое от конкретного типа:

func writeTo(w io.Writer) error

Ибо и os.File и bytes.Buffer и net.Conn и ещё 3000 десятков других структур могут быть «писателем».

Исправление beastie, :

Интерфейс описывает поведение.

На пальцах – например что-то что может куда-то писать → т.е. «писатель» io.Writer

type Writer interface {
	Write(p []byte) (n int, err error)
}

будет описывать любую структуру умеющую писать. А в частности любую структуру имеющую метод Write(p []byte) (n int, err error)

Таким образом ты абстрагируешься от конкретного типа и вместо зоопарка

func writeToFile(f *os.File) error
func writeToBuf(b *bytes.Buffer) error
func writeToSocket(n *net.Conn) error

указываешь только поведение, не зависимое от конкретного типа:

func writeTo(w io.Writer) error

Ибо и os.File и bytes.Buffer и net.Conn и ещё 3000 десятков других структур могут быть «писателем».

Исправление beastie, :

Интерфейс описывает поведение.

На пальцах – например что-то что может куда-то писать → т.е. «писатель» io.Writer

type Writer interface {
	Write(p []byte) (n int, err error)
}

будет описывать любую структуру умеющую писать. А в частности любую структуру имеющую метод Write(p []byte) (n int, err error)

Таким образом ты абстрагируешься от конкретного типа и вместо зоопарка

func writeToFile(f *os.File) error
func writeToBuf(b *bytes.Buffer) error
func writeToSocket(n *net.Conn) error

указываешь только поведение, не зависимое от конкретного типа:

func writeTo(w io.Writer) error

Ибо и os.File и bytes.Buffer и net.Conn и ещё 3000 десятков других структур имеют поведение io.Writer («писатель»).

Исправление beastie, :

Интерфейс описывает поведение.

На пальцах – например что-то что может куда-то писать → т.е. «писатель» io.Writer

type Writer interface {
	Write(p []byte) (n int, err error)
}

будет описывать любую структуру умеющую писать. А в частности любую структуру имеющую метод Write(p []byte) (n int, err error)

Таким образом ты абстрагируешься от конкретного типа и вместо зоопарка

func writeToFile(f *os.File) error
func writeToBuf(b *bytes.Buffer) error
func writeToSocket(n *net.Conn) error

указываешь только поведение, не зависимое от конкретного типа:

func writeTo(w io.Writer) error

Ибо и os.File и bytes.Buffer и net.Conn и ещё 3000 десятков других структур имеют поведение io.Writer.

Исходная версия beastie, :

Интерфейс описывает поведение.

На пальцах – например что-то что может куда-то писать → т.е. «писатель» io.Writer

type Writer interface {
	Write(p []byte) (n int, err error)
}

будет описывать любую структуру умеющую писать. А в частности любую структуру имеющую метод Write(p []byte) (n int, err error)

Таким образом ты абстрагируешься от конкретного типа и вместо зоопарка

func writeToFile(f *os.File) error
func writeToBuf(b *bytes.Buffer) error
func writeToSocket(n *net.Conn) error

указываешь только поведение

func writeTo(w io.Writer) error

Ибо и os.File и bytes.Buffer и net.Conn и ещё 3000 десятков других структур имеют поведение io.Writer.