映射中的函數鍵
本文探討了在 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中文網其他相關文章!