Go 是否支持嵌套类型声明或对匿名结构的文字赋值?
Does Go support nested type declarations or literal assignments to anonymous structs?
我是 Go 的新手,有两个关于类型的问题。
例如,拿这个代码:
type Rule struct {
handler func() (err error)
creator string
args struct {
extension string
action string
folder struct {
location string
storage string
}
}
}
1) 如何使用 单个 文字声明创建新的 Rule
并为 args
的属性赋值?这段代码有什么问题:
rule := Rule{
args: {
extension: "png,jpg,gif,svg",
action: "move",
},
}
2) 是否可以在类型中定义类型?例如,在不将代码分成两个单独的类型声明的情况下,我可以修改 Rule
类型的 args
部分,以便它定义称为 RuleArgs
的第二个类型吗?
我知道我 可以 将它们分解成多个赋值和声明,但我的问题是我是否必须这样做(即 Go 是否不可能不这样做)?
嵌套结构是 go 中的一件事,但它们会导致一些混乱。要实例化给定的对象,试试这个:
type Rule struct {
handler func() (err error)
creator string
args struct {
extension string
action string
}
}
rule := Rule{
args: struct {
extension string
action string
}{
extension: "png,jpg,gif,svg",
action: "move",
},
}
请注意,我列出了结构的参数名称和类型。另请注意,为简洁起见,我删除了 folder
参数。
如果要分多行:
rule2 := Rule{}
rule2.args.action = "some-action"
我是 Go 的新手,有两个关于类型的问题。
例如,拿这个代码:
type Rule struct {
handler func() (err error)
creator string
args struct {
extension string
action string
folder struct {
location string
storage string
}
}
}
1) 如何使用 单个 文字声明创建新的 Rule
并为 args
的属性赋值?这段代码有什么问题:
rule := Rule{
args: {
extension: "png,jpg,gif,svg",
action: "move",
},
}
2) 是否可以在类型中定义类型?例如,在不将代码分成两个单独的类型声明的情况下,我可以修改 Rule
类型的 args
部分,以便它定义称为 RuleArgs
的第二个类型吗?
我知道我 可以 将它们分解成多个赋值和声明,但我的问题是我是否必须这样做(即 Go 是否不可能不这样做)?
嵌套结构是 go 中的一件事,但它们会导致一些混乱。要实例化给定的对象,试试这个:
type Rule struct {
handler func() (err error)
creator string
args struct {
extension string
action string
}
}
rule := Rule{
args: struct {
extension string
action string
}{
extension: "png,jpg,gif,svg",
action: "move",
},
}
请注意,我列出了结构的参数名称和类型。另请注意,为简洁起见,我删除了 folder
参数。
如果要分多行:
rule2 := Rule{}
rule2.args.action = "some-action"