gpt4 book ai didi

go - 在结构体中初始化结构体

转载 作者:IT王子 更新时间:2023-10-29 01:38:57 25 4
gpt4 key购买 nike

这是对类似帖子的轻微改动。

我有一个名为 data 的包,其中包含以下内容:

type CityCoords struct {
Name string
Lat float64
Long float64
}

type Country struct {
Name string
Capitol *CityCoords
}

在我的主要功能中,我尝试像这样初始化一个国家:

germany := data.Country {
Name: "Germany",
Capitol: {
Name: "Berlin", //error is on this line
Lat: 52.5200,
Long: 13.4050,
},

}

当我构建我的项目时,我发现这个错误与我在上面标记的“名称”属性一致:

missing type in composite literal

如何解决此错误?

最佳答案

据了解,* 表示需要一个对象指针。因此,您可以先使用 &;

启动它
func main() {
germany := &data.Country{
Name: "Germany",
Capitol: &data.CityCoords{
Name: "Berlin", //error is on this line
Lat: 52.5200,
Long: 13.4050,
},
}
fmt.Printf("%#v\n", germany)
}

或者,您可以选择更优雅的方式;

// data.go
package data

type Country struct {
Name string
Capital *CountryCapital
}

type CountryCapital struct {
Name string
Lat float64
Lon float64
}

func NewCountry(name string, capital *CountryCapital) *Country {
// note: all properties must be in the same range
return &Country{name, capital}
}

func NewCountryCapital(name string, lat, lon float64) *CountryCapital {
// note: all properties must be in the same range
return &CountryCapital{name, lat, lon}
}

// main.go
func main() {
c := data.NewCountry("Germany", data.NewCountryCapital("Berlin", 52.5200, 13.4050))
fmt.Printf("%#v\n", c)
}

关于go - 在结构体中初始化结构体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40393128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com