函數作為結構體字段與結構體方法
在Go 中,函數可以作為結構體中的字段嵌入,也可以定義為這些結構體的方法。了解這些方法之間的差異可以優化您的程式碼設計。
函數類型的欄位
函數類型的欄位不是附加到結構類型的真正方法。它們儲存對函數的引用,而不是結構體方法集的一部分。
真實方法
使用結構體類型作為接收者聲明的真實方法是結構體方法集的組成部分。它們允許實現介面並在具體類型上進行操作。一旦定義,方法就無法在運行時更改。
何時使用函數類型欄位
何時使用真正的方法
示例
<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 中使用 Which?的詳細內容。更多資訊請關注PHP中文網其他相關文章!