Go では、インターフェイスはポリモーフィズムと抽象化を促進するための基本です。これらは、型が実装する必要がある一連のメソッドを指定するコントラクトとして機能し、さまざまな型を統一的かつ柔軟な方法で処理できるようにします。
Go では、インターフェイスはメソッドのセットを実装せずに定義する型です。インターフェイスを満たすために型が必要とするメソッド シグネチャのみを指定します。これにより、インターフェイスで定義されたメソッドを実装している限り、さまざまな型を均一に扱うことができます。インターフェイスはポリモーフィズムと抽象化を促進し、柔軟で再利用可能なコードの作成を容易にします。
io.Writer インターフェイスは、Go で最もよく使用されるインターフェイスの 1 つであり、バイトのスライス ([]byte) を受け取り、整数 (int) とエラー (error) を返す Write メソッドを定義します。 os.File、bytes.Buffer、net.Conn など、いくつかの型がこのインターフェイスを実装しています。これにより、さまざまなタイプの書き込みターゲットを統一的かつ柔軟な方法で処理できるようになります。
// Writer é a interface que encapsula a operação básica de escrita. type Writer interface { Write(p []byte) (n int, err error) }
正しいシグネチャを持つ Write メソッドを実装する型はすべて、io.Writer とみなされます。
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) }
/tmp ➜ go run example_io_writer.go Hello, World! Bytes escritos: 1101
io.Writer インターフェースは Go で最も一般的なインターフェースの 1 つであり、データ書き込み操作を抽象化するために使用され、さまざまなタイプの書き込みターゲットを均一に処理できるようになります。これにより、コードの再利用、汎用メソッドの作成、テストの作成が容易になります。さらに、io.Writer インターフェイスはポリモーフィズムを促進し、インターフェイスを実装するさまざまな型を互換的に使用できるようにします。これは、bytes、net などのいくつかの標準 Go 言語パッケージに広く実装されており、Go エコシステムにおけるその多用途性と重要性を示しています。
https://pkg.go.dev/io#Writer
https://pkg.go.dev/os@go1.23.3#File.Write
https://pkg.go.dev/log/slog/internal/buffer#Buffer.Write
https://pkg.go.dev/net@go1.23.3#Conn
以上がインターフェイス書き込みの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。