首頁  >  文章  >  後端開發  >  為什麼函數不能用作 Go 中的 Map 鍵?

為什麼函數不能用作 Go 中的 Map 鍵?

Linda Hamilton
Linda Hamilton原創
2024-10-31 18:27:29539瀏覽

Why Can't Functions Be Used as Map Keys in Go?

映射中的函數鍵

本文探討了在 Go 程式語言中使用函數作為映射鍵的限制。

問題

考慮以下假設的Go 程式碼:

type Action func(int)
func test(a int) { }
func test2(a int) { }

func main() {
  x := map[Action]bool{}
  x[test] = true
  x[test2] = false
}

如果您嘗試編譯此程式碼,您將遇到錯誤,指示「無效的映射鍵」輸入Action。 ”

答案

Go 語言規範明確禁止使用函數、映射和切片作為映射鍵。具體來說,規範指出:

「必須為鍵類型的操作數完全定義比較運算子== 和!=;因此鍵類型不能是函數、映射或切片。 」

之所以存在此限制,是因為必須針對鍵類型明確定義相等比較運算符(== 和!=)。函數、映射和切片不是合適的鍵類型,因為它們的相等比較未完全定義。您應該使用其他適當的類型,例如字串、整數或結構體作為映射鍵。

以上是為什麼函數不能用作 Go 中的 Map 鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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