関数フィールドと構造体メソッド
Go では、関数を構造体に関連付ける方法は 2 つあります: フィールドとして、または方法。どちらのアプローチも異なる目的を果たしますが、効果的なコーディングには区別を理解することが重要です。
関数型のフィールド
関数型のフィールドは、構造体内の変数を参照します。関数を値として保持できます。これは、後で実行するために呼び出し可能なルーチンを保存する簡単な方法を提供します。メソッドとは異なり、これらの関数フィールドは、構造体のメソッド セットの一部ではありません。
メソッド
メソッドは、特定の構造体型に明示的にアタッチされる関数です。 。構造体をレシーバーとして宣言すると、それらは構造体のメソッド セットの一部となり、構造体の内部状態へのアクセスが提供されます。インターフェイスを実装するには、真のメソッドを定義する必要があります。
いつ使用するか
例
次のスニペットを考えてみましょう:
<code class="go">type Foo struct { Bar func() } func main() { f := Foo{ Bar: func() { fmt.Println("initial") }, } f.Bar() f.Bar = func() { fmt.Println("changed") } f.Bar() }</code>
ここで、f.Barは関数型のフィールドです。 2 番目の関数値が割り当てられて呼び出されるときのように、実行時に再割り当てできます。
真のメソッドとは対照的に、Bar は Foo の内部状態にアクセスできません。構造体自体から独立して動作します。
以上がGo で関数フィールドと構造体メソッドを使用する場合は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。