Go 使用结构、贴图或其他东西?

Go 使用结构、贴图或其他东西?,go,Go,我是新手(在某种程度上是编程新手),所以使用边学边练的方法 对于下面的代码(拉天气预报),我希望从列表中填充经度和纬度 我不完全确定首先如何设置该列表-使用structs,然后将存储的struct的值导入到代码中?我试过了,似乎一个结构中只能容纳一个lon/lat对。我想用地图,但不知道如何设置。也许,我应该将值列表存储在一个文本文件中,并从中读取: p := Place{ placeName: "Accra", lat: "43.6595", long: "-79.3433",

我是新手(在某种程度上是编程新手),所以使用边学边练的方法

对于下面的代码(拉天气预报),我希望从列表中填充经度和纬度

我不完全确定首先如何设置该列表-使用structs,然后将存储的struct的值导入到代码中?我试过了,似乎一个结构中只能容纳一个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个单独的long/lat值要使用)


Place
struct是一个单独的对象,它有三个属性,一个name和lat以及long。为了拥有多个,您必须单独实例化它们,通常,您需要将它们存储在一个集合中。在Go中,明智的选择是数组、切片或映射

下面是一个使用切片的示例。数组的语法大致相同。如果你愿意,我可以提供一个例子,在我吃完午饭回来后使用地图。另一件需要注意的事情是,我正在使用称为“复合文字”的语法分配集合。还有其他方法可以做到这一点。。。我可以使用
append
方法或更传统的索引/键赋值,如
myArray[0]=instanceofplace,这些索引/键已初始化

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"},
    }
扩展示例

编辑:与地图相同

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"},
    }

也许是“边练习边学习”的更好方法。你在这里看到的似乎是随机的,很难看出你的误解是什么。@JimB我正在努力完成这次旅行。在这里,我只是想在上面的forecast.Get函数中使用经度和纬度的多个值。我目前只能使用一个。如果
p.lat
p.long
有多个值,您将如何访问它们?
p
这里有一个
Place
值。你想要一个
Place
的列表(切片),一个字符串到lat-long对的映射,一个字符串到
Place
的映射吗?我在想一个字符串到lat-long对的映射你试过了吗?或者尝试使用
map[string]Place
中的内容。这太棒了!非常感谢。当然是一次学习经历。如果能以我的方式举出任何其他例子,比如使用地图,那就太好了。非常感谢。效果很好。给新手的建议-最有效的方法是什么?long和lat被用来从天气api中提取数据——其思想是设置Go代码,以便它像我们所做的那样,在给定long/lat值的列表中循环。对我来说,第2步是决定(并学习)将数据从api拉入mongodb是否更有效,然后从那里将数据拉入前端。一步一个脚印@user2022284我怀疑这会有多大的不同。在这两种情况下,map与slice与array之间的差异与其他因素(如响应从第三方API到达所需的时间或对其进行反序列化和对数据执行操作所需的时间)相比将非常小。一般来说,阵列提供了最好的性能,但它们也是最受限制的。例如,如果您知道列表中有多少条目,而不关心它们的顺序,那么数组可能是最快的结构。希望有帮助。
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"},
    }