Golang Go语言中 []*Struct 类型的变量应该使用哪种方式初始化?
Golang Go语言中 []*Struct 类型的变量应该使用哪种方式初始化?
特意去掉了 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{}
}
更多关于Golang Go语言中 []*Struct 类型的变量应该使用哪种方式初始化?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
type Domain struct {
Apps Apps json:"apps,omitempty"
}
更多关于Golang Go语言中 []*Struct 类型的变量应该使用哪种方式初始化?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
var domain Domain
app := APP{Id:0, Name:""}
domain.Apps := []*APP{&app} // 如果要 3 个 []*APP{&app, &app, &app}
我猜你的需求是因为前端说:空数据也要返回字段。
Projects: []ConfigK8SProject{
{Project: "dev/", AutoUpdate: true, Cluster: “local2180”, Namespace: “dev”},
{Project: “test/esb-*”, AutoUpdate: true, Cluster: “local2180”, Namespace: “test”},
}
前三种都不会出现 { “apps”: null}
在Golang(Go语言)中,[]*Struct
类型表示一个指向结构体指针的切片。初始化这种类型的变量有几种常见的方法,具体选择哪种方式通常取决于你的具体需求和代码风格。
-
直接声明并初始化:
var s []*MyStruct s = append(s, &MyStruct{Field1: "value1", Field2: 123})
这种方法首先声明一个空切片,然后使用
append
函数向切片中添加元素。 -
使用
make
函数:s := make([]*MyStruct, 0) // 创建一个空的切片 s = append(s, &MyStruct{Field1: "value1", Field2: 123})
make
函数用于分配并初始化一个切片,这里指定了切片的长度(容量为0,表示动态增长)。 -
使用字面量初始化并赋值:
s := []*MyStruct{ &MyStruct{Field1: "value1", Field2: 123}, &MyStruct{Field1: "value2", Field2: 456}, }
如果初始化时已知具体元素,可以直接使用切片字面量语法。
-
预先分配容量的方法:
s := make([]*MyStruct, 0, 10) // 预留容量为10 s = append(s, &MyStruct{Field1: "value1", Field2: 123})
这种方式在已知大概元素数量时可以提高性能,减少内存重新分配的次数。
选择哪种方式取决于你的具体场景,但通常 make
和切片字面量是最常用的两种初始化方法。