使用结构,地图或其他东西?

时间:2015-09-18 15:52:45

标签: go

我是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
}

1 个答案:

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

https://play.golang.org/p/1A45-Z6k7q