Struct 复合文字中缺少类型

Struct 复合文字中缺少类型,struct,go,Struct,Go,简单的问题。如何初始化这个结构?我想这样做: type A struct { B struct { Some string Len int } } 我预料到了一个错误: a := &A{B:{Some: "xxx", Len: 3}} 当然,我可以创建一个单独的结构B并通过以下方式初始化它: missing type in composite literal &main.A{B:struct { Som

简单的问题。如何初始化这个结构?我想这样做:

type A struct {
    B struct {
        Some string
        Len  int
    }
}
我预料到了一个错误:

a := &A{B:{Some: "xxx", Len: 3}} 
当然,我可以创建一个单独的结构B并通过以下方式初始化它:

missing type in composite literal
&main.A{B:struct { Some string; Len int }{Some:"xxx", Len:3}}
但它没有第一种方法有用。是否有一个初始化匿名结构的快捷方式?

允许匿名类型,这导致另一种可能性,即您可以保留
a
的原始定义,同时允许写入该类型的短复合文本。如果您真的坚持为
B
字段使用匿名类型,我可能会编写如下内容:

type Btype struct {
    Some string
    Len int
}

type A struct {
    B Btype
}

a := &A{B:Btype{Some: "xxx", Len: 3}}


输出

package main

import "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)
}
这样做:

missing type in composite literal
&main.A{B:struct { Some string; Len int }{Some:"xxx", Len:3}}

@silasdavis common,它是2013如果字段值是结构的切片,则此操作失败如果字段值是结构的切片,则此操作失败