在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*&&&&&]