猿问

使用 structs 、 maps 或其他东西?

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


对于下面的代码(它提取天气预报),我希望从我拥有的列表中填充经度和纬度。


我不完全确定如何首先设置该列表 - 使用结构然后将存储结构的值通过管道传输到此代码中?我试过了,似乎我只能在一个结构中保存一对经纬度。我正在考虑使用地图,但无法弄清楚如何设置它。也许,我应该将值列表存储在文本文件中并从那里读取:


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 值要使用)


type Place struct {

    placeName string

    lat       string

    long      string

}


杨魅力
浏览 170回答 1
1回答

慕森王

该Place结构是一个对象,它有三个属性,名称和经纬度和长。为了拥有多个,您必须单独实例化它们,通常,您会将它们存储在一个集合中。在 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
随时随地看视频慕课网APP

相关分类

Go
我要回答