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)
}
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
- 2 回答
- 0 关注
- 199 浏览
添加回答
举报