[]*Struct 类型的变量应该使用哪种方式初始化?

2022-01-17 11:26:35 +08:00
 mauve

特意去掉了 omitempty tag

为了防止出现

{
    "apps": null
}

最推荐的声明方式应该是哪一种?

package main

type App struct {
	Id   int    `json:"id"`
	Name string `json:"name"`
}

type Apps []*App

type Domain struct {
	Apps Apps
}

const CustomCapacity = 3

func main() {
	apps1 := make([]*App, 0, CustomCapacity)
	apps2 := make([]App, 0, CustomCapacity)
	apps3 := make(Apps, 0, CustomCapacity)
	apps4 := Apps{}
	apps5 := &Apps{}
}

1088 次点击
所在节点    Go 编程语言
4 条回复
MidGap
2022-01-17 14:20:10 +08:00
type Domain struct {
Apps Apps `json:"apps,omitempty"`
}
777777
2022-01-17 17:13:44 +08:00
var domain Domain
app := APP{Id:0, Name:""}
domain.Apps := []*APP{&app} // 如果要 3 个 []*APP{&app, &app, &app}

我猜你的需求是因为前端说:空数据也要返回字段。
eudore
2022-01-18 09:07:50 +08:00
Projects: []*ConfigK8SProject{
{Project: "dev/*", AutoUpdate: true, Cluster: "local2180", Namespace: "dev"},
{Project: "test/esb-*", AutoUpdate: true, Cluster: "local2180", Namespace: "test"},
}
hzzhzzdogee
2022-01-21 22:48:48 +08:00
前三种都不会出现 { "apps": null}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/828707

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX