История изменений
Исправление 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.