首頁 > 後端開發 > Golang > 為什麼我的 Go 程式碼會拋出「無法將 m2 分配給 Map[interface{}]interface{}」錯誤?

為什麼我的 Go 程式碼會拋出「無法將 m2 分配給 Map[interface{}]interface{}」錯誤?

Patricia Arquette
發布: 2024-12-06 21:50:13
原創
228 人瀏覽過

Why Does My Go Code Throw a

如何解決「無法將m2 指派給Map[interface{}]interface{}」錯誤

在您的程式碼中,您遇到了與類型相關的錯誤Keys函數中使用的地圖與您嘗試訪問的地圖之間的兼容性:

cannot use m2 (type map[int]interface {}) as type map[interface {}]interface {} in argument to Keys
登入後複製

要解決此問題,您應該請記住以下幾點:

Golang 的類型系統和泛型

  • Golang 是一種靜態型別語言,這表示它需要明確型別定義。
  • Golang 不需要支援泛型,因此不能定義具有泛型類型的函數。

類型相容性

在您的程式碼中,Keys 函數被定義為與map[interface{}]interface{} 類型的映射一起使用,而您使用的是map[int]interface{} 類型的映射。這些類型不相容,因為密鑰類型不同。

有多種方法可以解決此問題:

選項1:修改鍵函數

  1. 更改函數定義以接受類型的映射map[int]interface{}:
func Keys(m map[int]interface{}) []interface{} {
    // Implement function
}
登入後複製

選項2:修改地圖

  1. 將地圖類型改為map[interface{}]interface{}:
m2 := map[interface{}]interface{}{
    2: "string",
    3: "int",
}
登入後複製

選項3:使用反射(不建議)

  1. 使用反射包存取地圖鍵。然而,這種方法會帶來性能損失。

請記住,類型相容性在 Golang 中至關重要。確保程式碼中的類型與預期類型匹配,以避免此類錯誤。

以上是為什麼我的 Go 程式碼會拋出「無法將 m2 分配給 Map[interface{}]interface{}」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板