Golang 빈 Array Json으로 output 시 null(nil)이 되는 현상

GeniusK·2020년 9월 14일
0

TIL

목록 보기
1/1

Golang으로 API를 개발하다가 GetList API에서 리스트가 존재하지 않을 경우 null로 return이 되는 현상이 있었다.
일단 걍 신경쓰지 않고 개발하다가 프론트와 연동 시 프론트에서 Array 형태로 올 때도 있고 null로 올 경우에는 또 따로 핸들링 해줘야 해서 번거로웠다.

아무래도 정상적인 API라면 빈 Array라면 null로 주는게 아니고 [] 로 주는 형태가 맞을거 같아서 찾아보다가 문제를 발견했다.

기존 flow는

var itemList []Item
for _, item := range targetItemList {
	// blah blah
}

이렇게 했었는데 itemList가 값을 넣기 전에는 실제 메모리 상에 할당되지 않고 points가 nil로 되어서 json으로 할 시 nil로 되어 null이 반환되었던 것이다.

개선한 방법은

itemList := make([]Item, 0)
for _, item := range targetItemList {
	// blah blah
}

이렇게 하는 것이다.

또 다른 방법으로는

itemList := []Item{}
for _, item := range targetItemList {
	// blah blah
}

이렇게 하는 것인데 이건 마음에 들지 않는다

이유는 Jetbrains Goland에서 아래와 같이 바꾸라고 추천해주는데

바꾸면 아래처럼

이렇게 된다

근데 이렇게 하면 다시 nil로 되는데..?

참고 링크
https://stackoverflow.com/questions/25543520/declare-slice-or-make-slice

0개의 댓글