var anonymousStruct = &struct { Value int Test func() }{ Test: func() { fmt.Println(anonymousStruct.Value) }, }
コードを見ると、6 行目で問題が発生しました。関数 "Test" がパラメーター "Value" にアクセスできません。 「anonymousStruct.Test(anonymousStruct.Value)」と同様に、パラメータとして再度渡さずに「Value」へのアクセスを関数に与える方法はありますか?言い換えれば、Go の匿名構造体は関数の代わりにメソッドを持つことができるのでしょうか?ご指導ありがとうございます。
メソッド宣言には(レシーバーとして)名前付き型のみを含めることができるため、メソッドを匿名構造体として宣言することはできません。
これに加えて、匿名構造体がメソッドを持つ型に埋め込まれている場合、匿名構造体はメソッドを持つことができます (それらは昇格されます)。
この例では、変数は宣言された後 (複合リテラルの後) にのみスコープ内に存在するため、複合リテラル 内で anonymousStruct
変数を参照することはできません。 仕様: 宣言とスコープを参照してください。例: 関数内での再帰関数の定義それでは、行きましょう。
たとえば、変数宣言後に関数フィールドを初期化できます:
リーリーこれは出力されます (Go Playground で試してください):
リーリー以上がGo では匿名構造体にメソッドを含めることはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。