無效操作:Go 令人困惑的映射指標索引
在Go 中操作對應時,可能會遇到錯誤訊息:「無效操作- 輸入map[key]value 不支援索引。而不是映射值本身時,會出現此錯誤。與結構體的規範相反,映射不會自動取消引用。
解決此問題的關鍵是在執行索引操作之前取消引用指標以存取映射值。考慮以下範例:func (b *Balance) Add(amount Amount) *Balance { // Dereference the pointer to access the map current, ok := (*b)[amount.Currency] if ok { (*b)[amount.Currency] = current + amount.Value } else { (*b)[amount.Currency] = amount.Value } return b }在這種情況下,使用“
”運算子取消引用“map[key]value”,以在索引之前顯示實際的對應值。
Go 對映射的指標處理與結構體的指標處理不同。為了避免過度複製,沒有必要定義採用映射指標的接收器函數。相反,直接傳遞映射值,如原始程式碼片段所示。 透過理解 Go 中映射指標的細微差別,程式設計師可以有效地解決這個神秘的錯誤訊息並自信地操作映射,而不需要不必要的操作價值複製。以上是為什麼Go會拋出「無效運算-類型Map[key]value不支援索引」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!