M
M
ML2017-02-12 15:29:58
go
ML, 2017-02-12 15:29:58

How to convert golang type?

How to get value from t["key"] with interface{} type and write it to num variable with int type ?

var t map[string]interface{}
var num int
t["key"] = "1"
num := t["key"].(int) //panic server

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
Alexander Pavlyuk, 2017-02-12
@staffID

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")
  }
}

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question