bound := []interface{}{1.00, 1.00, 1.00, 1.00}
new_bound := bound.([]float32)
log.Println(new_bound)
如何将接口(interface)数组转换为 float 组?
invalid type assertion: bound.([]float32) (non-interface type []interface {} on left)
在实际项目中
panic: interface conversion: interface is []interface {}, not []float32
最佳答案
在您的示例中,您有一个 slice ,其中它包含的每个项目都是一个interface{}
,而不是说,一个表示 [] 的单个
,因此你不能像那样简单地转换整个集合。相反,您必须迭代它并对集合中的每个项目进行类型断言。这是一个例子; https://play.golang.org/p/dD4161xgaV interface{}
float32
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)
}
关于go - 如何将接口(interface)数组转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37079018/