2 回答

TA貢獻1874條經驗 獲得超12個贊
是的,如果鍵類型是 "exactly" ,你做了什么報告string。
但是例如,如果鍵類型是一個自定義類型作為string其基礎類型,就像這個例子:
type mystr string
m := map[mystr]int{}
那么密鑰類型將不等于reflect.TypeOf("")。
如果這是你想要的,這取決于你。如果你也想接受上述地圖類型,你可以檢查鍵的類型是否等于reflect.String這樣:
if v.Type().Key() == reflect.TypeOf("") {
fmt.Print("It is string")
}
if v.Type().Key().Kind() == reflect.String {
fmt.Print("It is string kind")
}
對于上面的內容map[mystr]int,這是輸出(在Go Playground上嘗試):
It is string kind
(密鑰不是 type string,而是 kind string。)

TA貢獻1786條經驗 獲得超13個贊
您可以提取Kind密鑰并在reflect包中使用種類枚舉來處理它,如下reflect.String所示:
package main
import (
? ? "fmt"
? ? "reflect"
)
func main() {
? ? obj := make(map[string]interface{})
? ? ? ? fmt.Println(reflect.TypeOf(obj).Key().Kind() == reflect.String) // It will print true
}
- 2 回答
- 0 關注
- 142 瀏覽
添加回答
舉報