예제 코드를 찾아서 복사하다가 갑지기 panic 컴파일 오류를 만날 수 있다.
panic: assignment to entry in nil map
package main
import "fmt"
func main() {
var m map[string]int
m["a"] = 1
m["b"] = 2
for i, j := range m {
fmt.Printf("%s %d\n", i, j)
}
}
그 이유는 map을 초기화하지 않은 상태(nil)에서 값을 할당(assignment)하다가 발생한 것이다.
panic: assignment to entry in nil map
goroutine 1 [running]:
main.main()
/mydev/go/src/test/test.go:8 +0x76
goroutine 2 [runnable]:
runtime.forcegchelper()
/usr/local/go/src/runtime/proc.go:90
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:2232 +0x1
goroutine 3 [runnable]:
runtime.bgsweep()
/usr/local/go/src/runtime/mgc0.go:82
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:2232 +0x1
goroutine 4 [runnable]:
runtime.runfinq()
/usr/local/go/src/runtime/malloc.go:712
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:2232 +0x1
exit status 2
[Finished in 0.146s]
이럴 때는 map을 초기화해야 한다.
package main
import "fmt"
func main() {
var m map[string]int
m = map[string]int{}
m["a"] = 1
m["b"] = 2
for i, j := range m {
fmt.Printf("%s %d\n", i, j)
}
}
문제 해결된다.
'go lang' 카테고리의 다른 글
[go lang] import 별명 (alias) (0) | 2015.03.28 |
---|---|
[go lang] 변수나 라이브러리를 사용하지 않는다고 에러 나는 경우 (0) | 2015.03.28 |
[go lang] underscore(_) 의 사용 (0) | 2015.03.27 |
atom 으로 go run 환경 구성하기 (0) | 2015.03.27 |
[Go Lang] Go 언어 맛보기 - NES ROM 에뮬레이터 (0) | 2015.03.26 |