в go, интерфейсы являются фундаментальными для продвижения полиморфизма и абстракции. Они действуют как контракты, которые указывают набор методов, которые должен реализовать тип, позволяя обработать различные типы равномерно и гибко.
]
Интерфейсы
]
в Go, интерфейс - это тип, который определяет набор методов без их реализации. Он определяет только подписи методов, которые должен был удовлетворить интерфейс. Это позволяет обрабатывать различные типы равномерно, если они реализуют методы, определяемые интерфейсом. Интерфейсы способствуют полиморфизму и абстракции, облегчая создание гибкого и многоразового кода.
]
io.writer
]
интерфейс io.writer является одним из наиболее используемых в Go. Несколько типов реализуют этот интерфейс, включая OS.File, Bytes.Buffer и Net.Conn. Это позволяет относиться к различным типам направлений, которые обращаются равномерно и гибко.
]
// Автор - это интерфейс, который инкапсулирует базовую операцию написания.
Тип интерфейса писателя {
Write (p [] byte) (n int, ошибка ошибки)
}
]
]
// Writer é a interface que encapsula a operação básica de escrita.
type Writer interface {
Write(p []byte) (n int, err error)
}
]
]
N: Это количество написанных байтов.
- ]
ERR: это значение типа ошибки, которое указывает, возникают ли какие -либо ошибки во время написания.
]
- ]
]
- любой тип, который реализует метод записи с правильной подпиской, будет считаться io.writer.
]
Почему writer io.writer?
]
]
]
Abstraction
: позволяет вам равномерно относиться к различным типам письменных мест.
]
гибкость
: облегчает создание общих методов, которые принимают любые виды, которые реализуют интерфейс io.writer.
- ]
повторно используйте код : Использование io.writer может быть повторно использован с различными типами направлений, такими как файлы, сокеты, буффирс и т. Д.
]
- ]
test : позволяет вам создавать макеты и заглушки для тестирования изолированного.
]
- ]
Пример
]
Package Main
импорт (
"FMT"
"ты"
"io"
)
Func main () {
var w io.writer = os.stoutout // w имеет тип io.writer
N, err: = w.write ([] byte ("Привет, мир!"))))
Если ошибка!
fmt.println ("error:", err)
}
fmt.printf ("\ bbytes Писания: %b", n)
}
]
- /tmp ➜ ➜ ➜ ➜ run run example_io_writer.go
Привет, мир!
Байт Писания: 1101
]
]
Заключение
]
интерфейс io.writer является одним из наиболее распространенных интерфейсов в Go. Это облегчает повторное использование кода, создание общих методов и написание тестов. Кроме того, интерфейс IO.Writer способствует полиморфизму, позволяя различным типам, которые реализуют интерфейс, используются взаимозаменяемо. Он широко реализован в нескольких стандартных языковых пакетах, таких как байты, сеть, среди прочего, демонстрируя свою универсальность и важность в экосистеме GO.
]
Ссылки
]
package main
import (
"fmt"
"os"
"io"
)
func main() {
var w io.Writer = os.Stdout // w é do tipo io.Writer
n, err := w.Write([]byte("Hello, World!"))
if err != nil {
fmt.Println("Erro:", err)
}
fmt.Printf("\bBytes escritos: %b", n)
}
https://pkg.go.dev/
[email protected]#file.writal*
https://pkg.go.dev/log/slog/internal/buffer#buffer.write*&&&&]]
https://pkg.go.dev/
[email protected]#conn*&&&]]
/tmp ➜ go run example_io_writer.go
Hello, World!
Bytes escritos: 1101
]