儘管符合 Go結構體可比較規範,其中結構體的所有欄位都是可比較的,但以下程式碼失敗編譯:
理解這種失敗的關鍵在於區分可比性和可排序性。
雖然 Student 結構體的欄位確實是可比較的,但 >= 運算子是排序運算符,沒有可比性。 Go 規範中明確提到了這種區別,其中結構體值被定義為“如果所有字段都可比較,則可比較”,但僅“如果其對應的非空白字段相等,則相等”。在本文中沒有提到排序。
導致此編譯時錯誤的誤解源於假設可比性意味著可排序性。在 Go 中,這些是不同的概念。雖然可以比較結構是否相等,但預設情況下它們不能排序,除非它們的欄位提供特定的排序關係。
以上是為什麼 Go 中的結構體比較失敗,儘管有可比較字段?的詳細內容。更多資訊請關注PHP中文網其他相關文章!