首頁  >  文章  >  後端開發  >  如何防止類型被用作 Go 中的映射鍵?

如何防止類型被用作 Go 中的映射鍵?

Susan Sarandon
Susan Sarandon原創
2024-10-28 02:28:31220瀏覽

How to Prevent a Type from Being Used as a Map Key in Go?

防止類型用作映射鍵

問題: 嘗試使用類型作為映射鍵會導致編譯時錯誤,儘管包含私有成員的類型。如何解決這個問題?

答案:

雖然防止類型被用作映射鍵本身可能沒有什麼好處,但在某些情況下需要採取這樣的行動。根據語言規範,映射鍵必須遵守一定的比較規則。這裡有兩種防止類型被用作映射鍵的方法:

方法1:嵌入不可比較的字段

最簡單的解決方案是嵌入一個字段在類型不可比較的類型內,例如切片、映射或函數。這違反了映射鍵的比較運算子要求,導致類型不合適。例如:

<code class="go">type MyType struct {
    S string
    i int
    notComparable []int
}</code>

方法 2:使用包裝類型

或者,可以建立一個包裝類型,嵌入原始類型並添加不可比較的類型場地。此包裝類型可以在其他地方使用,而原始類型保留其可比較性。例如:

<code class="go">type myType struct {
    S string
    i int
}

type MyType struct {
    myType
    notComparable []int
}</code>

注意:

必須考慮防止類型用作映射鍵的潛在影響。對於 Embedd Non-Comparable Field 方法,它引入了一個不可比較字段,這可能會對涉及類型的比較操作產生連鎖反應。

以上是如何防止類型被用作 Go 中的映射鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn