Go 是否支持嵌套类型声明或对匿名结构的文字赋值?

我是 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) 是否可以在类型中定义类型?例如,在不将代码分成两个单独的类型声明的情况下,我可以修改类型args的一部分Rule,以便它定义第二个类型吗RuleArgs?


我知道我可以将它们分解成多个赋值和声明,但我的问题是我是否必须这样做(即 Go 是否不可能不这样做)?


holdtom
浏览 98回答 1
1回答

牛魔王的故事

嵌套结构是一种可行的方法,但它们会导致一些混乱。要实例化给定的对象,试试这个: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"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go