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

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

如何將接口數組轉換為浮點數

如何將接口數組轉換為浮點數

Go
拉風的咖菲貓 2022-01-10 11:03:21
bound :=  []interface{}{1.00, 1.00, 1.00, 1.00}new_bound := bound.([]float32)log.Println(new_bound)如何將接口數組轉換為浮點數組?無效類型斷言:bound.([]float32) (左側的非接口類型 []interface {})在實際項目中恐慌:接口轉換:接口是 []interface {},而不是 []float32
查看完整描述

2 回答

?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

在您的示例中,您有一個切片,其中包含的每個項目都是一個,interface{}而不是一個interface{}代表 a的單個項目[]float32,因此您不能像這樣簡單地轉換整個集合。相反,您必須對其進行迭代并對集合中的每個項目進行類型斷言。這是一個例子;https://play.golang.org/p/dD4161xgaV


bound :=  []interface{}{1.00, 1.00, 1.00, 1.00}

new_bound := []float64{}

for _, v := range bound {

     new_bound = append(new_bound, v.(float64))

}

需要注意的另一件事是,這些文字隱含了它們的類型,float64因此您在這里實際上需要它。


編輯:包括 OneOfOne 發布的這個更優化的解決方案;


func main() {

    bound := []interface{}{1.00, 1.10, 1.11, 1.111}

    new_bound := make([]float64, len(bound))

    for i := range bound {

        new_bound[i] = bound[i].(float64)

    }

    fmt.Println(new_bound)


}


查看完整回答
反對 回復 2022-01-10
?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

您將需要遍歷切片并將每個項目附加到新切片。為了將它附加到您的 []float32,您需要鍵入 assert:


bound := []interface{}{1.00, 1.00, 1.00, 1.00}

new_bound := make([]float32, 0, len(bound))

for _, v := range bound {

    new_bound = append(new_bound, v.(float32))

}

GoPlay 在這里:https : //play.golang.org/p/S8-4KJkqPq


查看完整回答
反對 回復 2022-01-10
  • 2 回答
  • 0 關注
  • 217 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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