답변:
https://play.golang.org/p/JGZ7mN0-U-
for k, v := range m {
fmt.Printf("key[%s] value[%s]\n", k, v)
}
또는
for k := range m {
fmt.Printf("key[%s] value[%s]\n", k, m[k])
}
for
명령문의 go language specs 는 첫 번째 값이 키이고 두 번째 변수는 값이지만 지정하지 않아도되도록 지정합니다.
다음 slice
은 맵 키 를 얻는 쉬운 방법 입니다.
// Return keys of the given map
func Keys(m map[string]interface{}) (keys []string) {
for k := range m {
keys = append(keys, k)
}
return keys
}
// use `Keys` func
func main() {
m := map[string]interface{}{
"foo": 1,
"bar": true,
"baz": "baz",
}
fmt.Println(Keys(m)) // [foo bar baz]
}
Keys
기능, 모든 유형의 키가 아닌 문자열을지도를 취할?
func Keys(m map[interface{}]interface{}) (keys []interface{})
, @ RobertT.McGibbon 함수 "prototype"을 변경해야합니다
map[interface{}]interface{}
. Go는 제네릭을 지원하지 않습니다. map
다른 키 유형의 맵을 허용 하는 매개 변수를 사용하여 함수를 작성할 수 없습니다 .
Go 언어 맵에서 모든 키 목록을 얻는 방법이 있습니까?
ks := reflect.ValueOf(m).MapKeys()
모든 키를 어떻게 반복합니까?
허용 된 답변을 사용하십시오.
for k, _ := range m { ... }
for _, k := range v.MapKeys()
당신의 예에서 k
열쇠 조각의 int 색인이 될 것이라고 생각했다고 생각합니다.