登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-15 16:06:37 253浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《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) 是否可以在类型中定义类型?例如,在不将代码分解为两个单独的类型声明的情况下,我可以修改 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 是否支持嵌套类型声明或对匿名结构的文字赋值?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>