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"