在GO中,接口是促进多态性和抽象的基础。它们充当指定类型应该实现的一组方法的合同,允许对不同的类型进行统一和灵活的处理。
接口
在GO中,接口是一种定义一组方法而不实现的类型。它仅指定类型必须满足接口的方法的签名。只要它们实现了界面定义的方法,就可以统一处理不同类型。界面促进了多态性和抽象,从而促进了灵活和可重复使用的代码的创建。
io.writer
io.writer接口是GO中使用的最常用的界面之一。几种类型实现了此接口,包括OS.File,Bytes.buffer和Net.Conn。这允许不同类型的写作目的地均匀地对待
。
// Writer是封装基本写作操作的接口。
类型Writer界面{
写(p []字节)(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?
:允许您均匀地对待不同类型的写作目的地。
:促进了接受IO.Writer接口的任何类型的通用方法的创建。
重复使用- :使用io.writer可以用不同类型的目的地(例如文件,插座,bufffers等)重复使用。
test
:允许您创建模拟和存根以隔离代码。
-
例子
软件包main
进口 (
“ FMT”
“你”
“ io”
)
func main(){
var w io.writer = os.stoutout // w属于io.writer类型
n,err:= w.write([] byte(“你好,世界!”))))))
如果err!= nil {
fmt.println(“错误:”,err)
}
fmt.printf(“ \ bbytes著作:%b”,n)
}
-
结论
-
参考
https://pkg.go.dev/io#writer
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*&&&&&]