itcore TOPTIPSgo_2string.php  タグ:go interface string 型変換

GO言語 interface{}データをstringに変換する、 | itcore 2021年

// valueをstringに変換する。
func uConvStrInterface(value interface{}) string {
  // panicリカバリ
  defer func() {
    if err := recover(); err != nil {
      log.Println("ERROR15 uConvStrInterface err=", err, " value=", value)
    }
  }()

  // 各種の型をstringに変換する。
  valueStr := ""
  switch v := value.(type) {
  case string:
    valueStr = v
  case int:
    valueStr = strconv.Itoa(v)
  case float64:
    valueStr = strconv.FormatFloat(v, 'f', -1, 64)
  case bool:
    valueStr = strconv.FormatBool(v)
  case []interface{}:
    for _, v2 := range v {
      v2_str := uConvStrInterface(v2) // 再帰
      valueStr += v2_str + ","
    }
    valueStr = valueStr[:len(valueStr)-1]
    //valueStr = "interface908" // debug
  case map[string]interface{}:
    bytes, _ := json.Marshal(v)
    valueStr = string(bytes)
  default:
    valueStr = ""
    //valueStr = v.(string) // debug エラーを出して型を確認する。
  }
  return valueStr
}