我是Go的新手(并且在一定程度上编程),所以使用学习练习方法。
对于下面的代码(提取天气预报),我希望从我的列表中填充经度和纬度。
我不完全确定如何设置该列表 - 使用结构然后将存储结构的值传递给此代码?我试过了,似乎我只能在一个结构中保持一个lon / lat对。我在考虑使用地图,但无法弄清楚如何设置地图。也许,我应该将值列表存储在文本文件中并从那里读取:
p := Place{
placeName: "Accra", lat: "43.6595", long: "-79.3433",
placeName: "Kumasi", lat: "43.6595", long: "-79.3433",
placeName: "Tamale", lat: "43.6595", long: "-79.3433",
}
f, err := forecast.Get(key, p.lat, p.long, "now", forecast.CA)
if err != nil {
log.Fatal(err)
}
结构看起来像这样(我有大约10个单独的长/ lat值)
type Place struct {
placeName string
lat string
long string
}
答案 0 :(得分:0)
Place
结构是一个单独的对象,它有三个属性,名称和lat和long。为了拥有多个,你必须单独实例化它们,通常,你将它们存储在一个集合中。在Go中,明智的选择将是数组,切片或地图。
以下是使用切片的示例。数组的语法大致相同。如果您愿意,我可以提供一个在我从午餐回来后使用地图的示例。另一件需要注意的事情是,我使用一种称为'复合文字'的语法来分配集合。还有其他方法可以做到这一点...我可以使用append
方法或更传统的分配来索引/键,如myArray[0] = instanceOfPlaceThatIsAlreadyInitialized
。
places := []Place{
Place{placeName: "Accra", lat: "43.6595", long: "-79.3433"},
Place{placeName: "Kumasi", lat: "43.6595", long: "-79.3433"},
Place{placeName: "Tamale", lat: "43.6595", long: "-79.3433"},
}
扩展示例; https://play.golang.org/p/EHBgn_I9dA
编辑:与地图相同;places := map[string]Place{
"Accra":Place{placeName: "Accra", lat: "43.6595", long: "-79.3433"},
"Kumasi":Place{placeName: "Kumasi", lat: "43.6595", long: "-79.3433"},
"Tamale": Place{placeName: "Tamale", lat: "43.6595", long: "-79.3433"},
}