var anonymousStruct = &struct { Value int Test func() }{ Test: func() { fmt.Println(anonymousStruct.Value) }, }
查看程式碼,我在第6行遇到了一個問題:函數「Test」無法存取參數「Value」。有沒有一種方法可以讓函數存取「Value」而無需再次將其作為參數傳遞,類似於「anonymousStruct.Test(anonymousStruct.Value)」?換句話說,Go 中匿名結構體可以有方法而不是函數嗎?謝謝您的指導。
您不能將方法宣告為匿名結構,因為方法宣告只能包含命名類型(作為接收者)。
除此之外,如果匿名結構嵌入具有方法的類型(它們會被提升),則它們可以具有方法。
在您的範例中,您無法在 複合文字 中引用 anonymousStruct
變量,因為變數僅在聲明之後(在複合文字之後)才在範圍內。請參閱規格:宣告與範圍;範例: 在函數中定義遞迴函數走吧。
例如,您可以在變數宣告之後初始化函數欄位:
var anonymousStruct = &struct { Value int Test func() }{Value: 3} anonymousStruct.Test = func() { fmt.Println(anonymousStruct.Value) } anonymousStruct.Test()
這將輸出(在 Go Playground 上嘗試):
3
以上是Go 中匿名結構體可以有方法嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!