Golang中空切片转成JSON的问题

在Golang中,声明空切片有如下几种方法:

slice := make([]int, 0)
slice := []int{}
var slice []int

如果是在Golang程序中使用,并感觉不到太大的差别,都可以直接使用append追加值.但是如果要转成JSON ,就需要注意了.上面三种方法转成的json分别为:[] [] null.如果前端期待一个列表,而接口返回的是null,就会出现问题.

如果此切片最终是要通过JSON返给前端用的,比较好的做法就是不使用var来声明空切片,这样就可以避免上面的问题.

但是在goland中,如果我们用[]int{}声明空切片的话,goland会提示一个警告(如下图所示),虽然可以忽略,但是对于强迫症患者来说真是不能忍.

我们可以通过设置来取消此提示,设置->编辑器->检查->Go->声明冗余->使用文字声明的空切片->取消勾选->应用.

关于声明空切片的相关说明可以看这个wiki:https://github.com/golang/go/wiki/CodeReviewComments#declaring-empty-slices

大意是说,几种声明方式并没有太大区别,除非要转成JSON,否则优先选var的声明方式.