Не получаю значение ключа(int) из среза

Sergei R

Есть 2 аналогичных примера

countryCapitalMap = make(map[string]string)
countryCapitalMap["France"] = "Paris"
countryCapitalMap["Italy"] = "Rome"
countryCapitalMap["Japan"] = "Tokyo"
countryCapitalMap["India"] = "New Delhi"

for country := range countryCapitalMap {
   fmt.Println("Capital of",country,"is",countryCapitalMap[country])
}

Результат:

Capital of France is Paris

Capital of Italy is Rome

Capital of Japan is Tokyo

Capital of India is New Delhi

Т.е. я получаю как значение ключа, так и значение по ключу.

Вариант 2

x2 := make(map[int]string)
x2[5] = "message"
x2[1] = "Hello"
for key := range x2 {
    fmt.Println("key[" + string(key) + "] is: " + x2[key])
    if x2[key] == "message" {
        delete(x2, key)
    }
}

Результат:

key[] is: message

key[] is: Hello

Почему в данном случае я не получаю значение ключа?

1 ответ

Sergei R

package main

import (
    "fmt"
    "strconv"
)

func main() {
    x2 := make(map[int64]string)
    x2[5] = "message"
    x2[1] = "Hello"
    for key := range x2 {
        fmt.Println("key[" + strconv.FormatInt(key, 10) + "] is: " + x2[key])
        if x2[key] == "message" {
            delete(x2, key)
        }
    }
}

Для приведения типов есть отдельный пакет, используйте его, так же int64 (что то вроде расширенного типа) нужно юзать повсеместно. Всего доброго!

licensed under cc by-sa 3.0 with attribution.