go - 如何在 GO 中初始化多层嵌套结构?
问题描述
我正在尝试在 GO 中初始化以下结构:
这是结构:
type tokenRequest struct {
auth struct {
identity struct {
methods []string
password struct {
user struct {
name string
domain struct {
id string
}
password string
}
}
}
}
}
这是我的代码:
req := &tokenRequest{
auth: struct {
identity: struct {
methods: []string{"password"},
password: {
user: {
name: os.Username,
domain: {
id: "default",
},
password: os.Password,
},
},
},
},
}
https://play.golang.org/p/e8Yuk-37_nN
我可以在不单独定义所有嵌套结构的情况下进行初始化吗(即auth
, identity
, password
, user
)
谢谢你。
解决方案
如果您有匿名的、未命名的结构类型,则只能在重复结构定义时使用复合文字初始化它们。这是非常不方便的。
所以改为使用命名结构类型,这样你就可以在复合文字中使用它们,如下所示:
类型:
type domain struct {
id string
}
type user struct {
name string
domain domain
password string
}
type password struct {
user user
}
type identity struct {
methods []string
password password
}
type auth struct {
identity identity
}
type tokenRequest struct {
auth auth
}
然后初始化它(在Go Playground上试试):
req := &tokenRequest{
auth: auth{
identity: identity{
methods: []string{"password"},
password: password{
user: user{
name: os.Username,
domain: domain{
id: "default",
},
password: os.Password,
},
},
},
},
}
推荐阅读
- python - 将前导零添加到日期和时间字符串中的小时数
- spring-boot - Jersey 如何从请求中屏蔽密码
- python - 获取在函数内部创建的变量值
- sql - SQLite Sum 和 CASE 语句
- composer-php - 如何限制 PHP Deployer 作曲家的内存?
- c# - HRESULT 的异常:Excel Interop v2.0.50727 和 VS2017 上的 0x800A03EC
- angular - 如何检查 Angular 中的占位符内容?
- arrays - 将 char[] 转换为 char*[] 后出现分段错误
- sql - 将两个 select 语句的结果连接在一起
- bash - Bash Jobs:如何输出作业过程信息以及错误?