[] map [string] float64 литерал не является типом - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь создать срез map[string]float64 s, используя метод, который я видел в другом посте: Golang создает срез карт .

Я пытался изменить его на map [string] interface {}, но затем он говорит

cannot use distmap (type map[string]float64) as type map[string]interface {} in append

Я относительно новичок в Go.Я думал, что интерфейс {} может содержать любое значение, почему он не может содержать float64 в этом случае?

minDistance := make([]map[string]interface{}, 0, factorial(len(cities)))
for _, city := range cities {
    for k, v := range distances {
        var c []string
        var d []float64
        if strings.HasPrefix(k, city) {
            c = append(c, strings.Split(k, "+")[1])
            d = append(d, v)
        }
        var min float64
        index := 0
        if units == "mi" {
            min = 12450.5
        } else {
            min = 20037.5
        }
        for i, dist := range d {
            if dist < min {
                min = dist
                index = i
            }
        }
        distmap := map[string]float64{city + "+" + c[index]: min}
        minDistance = append(minDistance, distmap)
    }
    // fmt.Printf("Distance between %s: %f %s\n", k, v, units)
}

Ошибка при компиляции:

.\main.go:151:42: []map[string]float64 literal is not a type
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...