函數欄位與結構體方法
在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>
這裡,f.Bar是一個函數類型的欄位。它可以在運行時重新分配,如分配和調用第二個函數值時所見。
與 true 方法相比,Bar 無法存取 Foo 的任何內部狀態。它獨立於結構本身運作。
以上是Go 中何時使用函數欄位與結構體方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!