Go 中如何比較函數
簡介
Go 中,函數是可以引用的通過變數並作為參數傳遞給其他函數。然而,需要注意的是,Go 中的函數不能直接比較。這表示您不能使用標準比較運算子(==、!= 等)來確定兩個函數是否相等。
正確的比較方法
準確比較兩個函數的唯一方法是比較它們的位址。這是因為函數的位址唯一標識它。要取得函數的位址,可以使用:
範例
考慮以下Go 程式碼:
<code class="go">type Action func(foo string) var Undefined Action = func(foo string) {} var Defined Action = func(foo string) {} func compareFunctions() { if fmt.Sprintf("%v", Undefined) == fmt.Sprintf("%v", Undefined) { fmt.Println("Undefined and Undefined are equal") } else { fmt.Println("Undefined and Undefined are not equal") } if fmt.Sprintf("%v", Defined) == fmt.Sprintf("%v", Defined) { fmt.Println("Defined and Defined are equal") } else { fmt.Println("Defined and Defined are not equal") } if fmt.Sprintf("%v", Undefined) == fmt.Sprintf("%v", Defined) { fmt.Println("Undefined and Defined are equal") } else { fmt.Println("Undefined and Defined are not equal") } }</code>
執行此程式碼時,它會產生以下輸出:
Undefined and Undefined are equal Defined and Defined are equal Undefined and Defined are not equal
此輸出示範可以使用函數的位址進行比較且位址不同的兩個函數不相等。
結論
雖然 Go 中的函數值不能直接比較,但可以透過比較它們的位址來確定它們是否是相同的功能。透過上面的方法,你可以在Go中準確判斷兩個函數是否相等。
以上是如何比較 Go 中的函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!