我想使用匿名结构来做某事。
var users []struct{
Name string `json:"name,omitempty"`
Age int
}
我必须再次写类型以设置值
users = make([]struct{
Name string `json:"name,omitempty"`
Age int
}, 0, 10)
如果我坚持使用匿名结构,有什么办法可以使它更体面?
(如果没有,我想知道为什么golang设计会产生这样的功能...)
答案 0 :(得分:1)
一次性使用匿名结构很方便。
如果多次使用它,请定义一个命名结构类型。
如果仅在单个函数中使用它,则可以在该特定函数的范围内定义类型,因此很明显它不能在其他地方使用:
func myfunc() {
type MyType struct {
Name string
}
m := MyType{Name: "Hello, World!"} // this type can only be used within this func
fmt.Println(m)
}
答案 1 :(得分:0)
如果我坚持使用匿名结构,有什么办法可以使它更体面?
是的,有。使用:=
:
users := make([]struct{
Name string `json:"name,omitempty"`
Age int
}, 0, 10)
当然,这仅在定义变量后立即调用make
时有效。如果这些位被其他代码分隔,则此技巧对您不起作用。
但是不要害怕命名您的类型。无论如何(不管有没有:=
,这通常都是更好的方法。