[Go] nil map에 접근하면..

윤동환·2023년 7월 12일
0

Go

목록 보기
14/18
post-thumbnail

make를 사용하여 초기화 하다가 channel도 아니고 map을 왜 make로 해야하나? 라는 생긱에 일반 선언으로 코드를 작성하였더니 에러가 발생하였습니다....

문제 발생 코드

var cols map[string]interface{}

for k, v := range itemMap {
     cols[k] = v
}                    

itemMap에는 적당한 값이 있다 가정합니다.

에러

panic err 문구를 보면 nil map에 접근한다고 나옵니다.

위의 코드는 cols라는 map을 선언만 한 것일 뿐 초기화가 되어있지 않습니다.
선언만 했을 시 nil map이 선언되는 것이며 nil map에는 어떤 데이타를 쓸 수 없습니다.

데이터를 쓰기위해선 make나 리터럴값을 넣어 초기화 하여야 합니다.

//make를 사용한 초기화
cols := make(map[string]interface{})

//리터럴을 사용한 초기화
cols := map[string]string{
"GOOG": "Google Inc",
"MSFT": "Microsoft",
"FB": "FaceBook",
}

모르고 쓰다보니 이런 기본적인 것을 못챙기고 있었네요..
이번기회에 알아갑니다

Reference

http://golang.site/go/article/14-Go-%EC%BB%AC%EB%A0%89%EC%85%98---Map#:~:text=make()%20%ED%95%A8%EC%88%98%EC%9D%98%20%EC%B2%AB%EB%B2%88%EC%A7%B8,%EA%B5%AC%EC%A1%B0%EC%B2%B4%EB%A5%BC%20%EA%B0%80%EB%A6%AC%ED%82%A4%EB%8A%94%20%ED%8F%AC%EC%9D%B8%ED%84%B0%EC%9D%B4%EB%8B%A4).

profile
모르면 공부하고 알게되면 공유하는 개발자

0개의 댓글