复合文字中缺少类型
type A struct { B struct {
Some string
Len int
}
}
简单的问题。如何初始化这个结构?我想做这样的事情:
a := &A{B:{Some: "xxx", Len: 3}}
预计我会遇到错误:
missing type in composite literal
当然,我可以创建一个单独的结构B并通过以下方式对其进行初始化:
type Btype struct { Some string
Len int
}
type A struct {
B Btype
}
a := &A{B:Btype{Some: "xxx", Len: 3}}
但是它没有第一种方法有用。有没有初始化匿名结构的捷径?
回答:
该可转让规则是宽容的,这导致另一种可能性,你可以保留的原始定义匿名类型A
写入,同时允许该类型的短复合文字。如果您确实坚持使用该B
字段的匿名类型,那么我可能会写类似以下内容:
package mainimport "fmt"
type (
A struct {
B struct {
Some string
Len int
}
}
b struct {
Some string
Len int
}
)
func main() {
a := &A{b{"xxx", 3}}
fmt.Printf("%#v\n", a)
}
操场
输出量
&main.A{B:struct { Some string; Len int }{Some:"xxx", Len:3}}
以上是 复合文字中缺少类型 的全部内容, 来源链接: utcz.com/qa/407250.html