반응형
golang지도를 통해 반복
다음 유형의지도가 있습니다. map[string]interface{}
그리고 마지막으로 (goyaml을 사용하여 yml 파일에서 역 직렬화 한 후)
mymap = map[foo:map[first: 1] boo: map[second: 2]]
이지도를 어떻게 반복 할 수 있습니까? 다음을 시도했습니다.
for k, v := range mymap{
...
}
하지만 오류가 발생합니다.
cannot range over mymap
typechecking loop involving for loop
도와주세요.
예를 들면
package main
import "fmt"
func main() {
type Map1 map[string]interface{}
type Map2 map[string]int
m := Map1{"foo": Map2{"first": 1}, "boo": Map2{"second": 2}}
//m = map[foo:map[first: 1] boo: map[second: 2]]
fmt.Println("m:", m)
for k, v := range m {
fmt.Println("k:", k, "v:", v)
}
}
산출:
m: map[boo:map[second:2] foo:map[first:1]]
k: boo v: map[second:2]
k: foo v: map[first:1]
한 줄로 만들 수 있습니다.
mymap := map[string]interface{}{"foo": map[string]interface{}{"first": 1}, "boo": map[string]interface{}{"second": 2}}
for k, v := range mymap {
fmt.Println("k:", k, "v:", v)
}
출력은 다음과 같습니다.
k: foo v: map[first:1]
k: boo v: map[second:2]
이렇게 여러 줄로 쓸 수 있습니다.
$ cat dict.go
package main
import "fmt"
func main() {
items := map[string]interface{}{
"foo": map[string]int{
"strength": 10,
"age": 2000,
},
"bar": map[string]int{
"strength": 20,
"age": 1000,
},
}
for key, value := range items {
fmt.Println("[", key, "] has items:")
for k,v := range value.(map[string]int) {
fmt.Println("\t-->", k, ":", v)
}
}
}
그리고 출력 :
$ go run dict.go
[ foo ] has items:
--> strength : 10
--> age : 2000
[ bar ] has items:
--> strength : 20
--> age : 1000
참고 URL : https://stackoverflow.com/questions/8018719/iterating-through-a-golang-map
반응형
'developer tip' 카테고리의 다른 글
Django Rest 프레임 워크 토큰 인증 (0) | 2020.10.31 |
---|---|
옵션 값 가져 오기 또는 예외 발생 (0) | 2020.10.31 |
CSS3 전환 : "전환 : 모두"가 "전환 : x"보다 느립니까? (0) | 2020.10.30 |
커밋 기록을 잃지 않고 SVN에서 GIT로 코드를 마이그레이션하는 방법은 무엇입니까? (0) | 2020.10.30 |
양식 입력을 사용하여 카메라에 액세스하고 웹 앱을 사용하여 즉시 사진 업로드 (0) | 2020.10.30 |