我想知道如何定义和初始化嵌套 struct 中的 struct 和数组,例如:

type State struct {
    id string `json:"id" bson:"id"`
    Cities 
}

type City struct {
    id string `json:"id" bson:"id"`
}

type Cities struct {
    cities []City
}

现在我如何初始化这样的 struct ,如果有人对如何创建 struct 本身有不同的 idea .

谢谢

推荐答案

在您的示例中,速记文字语法为:

state := State {
    id: "CA",
    Cities:  Cities{
        []City {
            {"SF"},
        },
    },
}

如果您不需要文字的key:value语法,则使用更短的语法:

state := State {
    "CA", Cities{
        []City {
            {"SF"},
        },
    },
}    

顺便说一句,如果除了[]City之外,Cities不包含任何内容,那么只需使用City的一部分即可.这将导致较短的语法,并删除不必要的(可能)层:

type State struct {
    id string `json:"id" bson:"id"`
    Cities []City
}

type City struct {
    id string `json:"id" bson:"id"`
}


func main(){
    state := State {
        id: "CA",
        Cities:  []City{
             {"SF"},
        },
    }

    fmt.Println(state)
}

Go相关问答推荐

带有Go map[字符串]字符串的持久磁盘

调用API时使用nginx作为反向代理时从nginx获取502坏网关

为什么(编码器).EncodeElement忽略";,innerxml";标记?

Go Colly-访问for循环中的URL

";无效的复制因子;融合Kafka Go客户端

go中跨域自定义验证的问题

从 ApiGateway 中的 lambda Go 返回 Json

更改多对多连接表的名称

具有嵌套重复的正则表达式

在 Golang 模板中计算时间/持续时间

GqlGen - 在字段解析器中访问查询输入参数

Golang - 客户 Unmarshaler/Marshaler 在指针上具有 nil/null 值

Golang模板无法访问embedFS中的文件

Golang泛型在用作 map 元素时不起作用

Golang - 无法从 pipped Windows 命令中获取结果

K8s 算子读取原始数据

在 Go 中,为什么 exec.Command() 失败但 os.StartProcess() 成功启动winget.exe?

为什么 template.ParseFiles() 没有检测到这个错误?

Go 赋值涉及到自定义类型的指针

函数参数的判断顺序是什么?