如何将接口数组转换为浮点数

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

new_bound := bound.([]float32)

log.Println(new_bound)

如何将接口数组转换为浮点数组?


无效类型断言:bound.([]float32) (左侧的非接口类型 []interface {})


在实际项目中


恐慌:接口转换:接口是 []interface {},而不是 []float32


拉风的咖菲猫
浏览 200回答 2
2回答

守着星空守着你

在您的示例中,您有一个切片,其中包含的每个项目都是一个,interface{}而不是一个interface{}代表 a的单个项目[]float32,因此您不能像这样简单地转换整个集合。相反,您必须对其进行迭代并对集合中的每个项目进行类型断言。这是一个例子;https://play.golang.org/p/dD4161xgaVbound :=  []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)}

慕姐4208626

您将需要遍历切片并将每个项目附加到新切片。为了将它附加到您的 []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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go