728x90
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
반응형
'TIL' 카테고리의 다른 글
Tistory 너무 불편해 (0) | 2020.10.27 |
---|---|
Golang Gin-gonic에서의 request 파싱 Validation에 대해서 (0) | 2020.10.27 |
React v16 lifecycle - Updating (0) | 2019.09.21 |
React v16 lifecycle - Mounting (0) | 2019.09.21 |
React 부모 컴포넌트의 props가 같은 값으로 set 했을 시 자식 컴포넌트에서의 rendering에 대해서 (0) | 2019.09.16 |