構造体フィールドとしての関数と構造体メソッドとしての関数
Go では、関数を構造体内のフィールドとして埋め込んだり、それらの構造体のメソッドとして定義したりできます。 。これらのアプローチの違いを理解すると、コード設計を最適化できます。
関数型のフィールド
関数型のフィールドは、構造体型に付加された真のメソッドではありません。これらは、構造体のメソッド セットの一部ではなく、関数への参照を保存します。
True メソッド
True メソッドは、受信側として構造体の型を使用して宣言されます。構造体のメソッドセットに不可欠です。これらにより、インターフェイスの実装と具体的な型の操作が可能になります。一度定義すると、メソッドは実行時に変更できません。
関数タイプのフィールドを使用する場合
真のメソッドを使用する場合
例
<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>
出力:
initial changed
この例では、関数が Foo 構造体のフィールドとして埋め込まれています。実行時にフィールドを再割り当てすることで、Bar メソッドの動作を変更でき、関数型のフィールドの柔軟性を実証できます。
以上が構造体フィールドとしての関数と構造体メソッドとしての関数: Go ではどちらをいつ使用するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。