亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將接口{}轉換為特定類型

將接口{}轉換為特定類型

Go
開心每一天1111 2021-07-05 12:09:24
我正在開發將接收 JSON 的 Web 服務。Go 轉換類型過于嚴格。所以,我沒有下面的函數轉換interface{}中boolfunc toBool(i1 interface{}) bool {    if i1 == nil {        return false    }    switch i2 := i1.(type) {    default:        return false    case bool:        return i2    case string:        return i2 == "true"    case int:        return i2 != 0    case *bool:        if i2 == nil {            return false        }        return *i2    case *string:        if i2 == nil {            return false        }        return *i2 == "true"    case *int:        if i2 == nil {            return false        }        return *i2 != 0    }    return false}我認為,功能還不夠完善,我需要的功能轉換interface{}中string,int,int64,等所以我的問題:是否有庫(函數集)Go可以轉換interface{}為某些類型更新我的 Web 服務接收 JSON。我解碼它,map[string]interface{}我無法控制那些編碼它的人。所以我收到的所有值都是interface{}并且我需要將它轉換為某些類型的方法。所以它可能是nil, int, float64, string, [...],{...}我希望把它轉換成它應該是的樣子。例如int, float64, string, []string,map[string]string處理所有可能的情況,包括nil, 錯誤值等更新2我收到{"s": "wow", "x":123,"y":true}, {"s": 123, "x":"123","y":"true"}, {a:["a123", "a234"]},{}var m1 map[string]interface{}json.Unmarshal(b, &m1)s := toString(m1["s"])x := toInt(m1["x"])y := toBool(m1["y"])arr := toStringArray(m1["a"])
查看完整描述

2 回答

?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

快速/最佳方式是在時間執行中“投射”(如果您知道對象):


例如


package main    

import "fmt"    

func main() {

    var inter (interface{})

    inter = "hello"

    var value string

    value = inter.(string)

    fmt.Println(value)

}


查看完整回答
反對 回復 2021-07-19
  • 2 回答
  • 0 關注
  • 221 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號