在 Go 中,相等運算子(== 和 !=)可用來比較 interface{} 值。但是,由於 interface{} 值可以保存不同類型的值,因此了解如何比較這些值非常重要。
介面值是可比較的。如果滿足以下條件,則兩個介面值被視為相等:
在interface{}值保存自訂結構體值的情況下,Go的比較規則適用。如果結構體值的所有欄位都具有可比性,則認為結構體值具有可比性。如果兩個結構體值的非空字段具有相等的值,則認為它們相等。
考慮以下程式碼片段:
type MyStruct struct { Field1 int Field2 string } var A = []interface{}{} v := MyStruct{1, "Test"} for _, i := range A { if i == v { fmt.Println("Gotcha!") break } }
在此範例中,== 運算子用於將interface{} 值(v) 與interface{ } 切片中的值(A) 進行比較。由於 MyStruct 的值是可比較的,因此如果 v 中的對應欄位與 A 中的元素相等,則比較將傳回 true。
透過了解 Go 對 interface{} 值和結構體的相等規則,開發人員可以自信地在程式碼中比較這些值。 Go 清晰靈活的系統可確保相等性檢查能如預期運作,無論底層資料類型為何。
以上是Go 如何比較介面值(包括結構體)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!