staffID
@staffID

Как преобразовать тип Golang?

Как получить значение из t["key"] с типом interface{} и записать в переменную num с типом int?
var t map[string]interface{}
var num int
t["key"] = "1"
num := t["key"].(int) //panic server
  • Вопрос задан
  • 3110 просмотров
Решения вопроса 3
https://play.golang.org/p/PcQ81RtDk2
package main

import (
	"fmt"
	"strconv"
)

func main() {
	var t map[string]interface{}     // Создаем переменную, сейчас она nil и мы не можем в неё класть ключи
	t = make(map[string]interface{}) // Создаем map  в памяти, теперь можем класть ключи
	t["key"] = "1"                   // Кладём ключ

	var num int

	rawValue, ok := t["key"] // Вытаскиваем ключ из map
	if ok {
		stringValue, ok := rawValue.(string) // Вытаскиваем string из interface{}
		if ok {
			var err error
			num, err = strconv.Atoi(stringValue) // Парсим string в int
			if err == nil {
				fmt.Println(num)
			} else {
				fmt.Println("Число имеет неверный формат")
			}
		} else {
			fmt.Println("Внутри interface{} лежит не тип string")
		}
	} else {
		fmt.Println("Такого ключа нет в map")
	}
}
Ответ написан
Комментировать
uvelichitel
@uvelichitel Куратор тега Go
habrahabr.ru/users/uvelichitel
num := strconv.Atoi(t["key"].(string))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы