首頁 > 後端開發 > Golang > 主體

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

Susan Sarandon
發布: 2024-10-28 02:28:31
原創
235 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!