2 回答

TA貢獻(xiàn)1799條經(jīng)驗 獲得超8個贊
在您的示例中,您有一個切片,其中包含的每個項目都是一個,interface{}而不是一個interface{}代表 a的單個項目[]float32,因此您不能像這樣簡單地轉(zhuǎn)換整個集合。相反,您必須對其進(jìn)行迭代并對集合中的每個項目進(jìn)行類型斷言。這是一個例子;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 發(fā)布的這個更優(yōu)化的解決方案;
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)
}

TA貢獻(xiàn)1852條經(jīng)驗 獲得超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
- 2 回答
- 0 關(guān)注
- 214 瀏覽
添加回答
舉報