我使用Go编程语言进行编程。如何将接口{}转换为[] int?
假设有一个包含整数数组的interface{}
变量。如何将interface{}
转换回[]int
?
我已经试过
interface_variable.([]int)
我得到的错误是:
panic: interface conversion: interface is []interface {}, not []int
我使用Go编程语言进行编程。如何将接口{}转换为[] int?
假设有一个包含整数数组的interface{}
变量。如何将interface{}
转换回[]int
?
我已经试过
interface_variable.([]int)
我得到的错误是:
panic: interface conversion: interface is []interface {}, not []int
这是一个[]interface{}
不只是一个interface{}
,你通过它必须循环,并将其转换:
http://play.golang.org/p/R441h4fVMw
func main() {
a := []interface{}{1, 2, 3, 4, 5}
b := make([]int, len(a))
for i := range a {
b[i] = a[i].(int)
}
fmt.Println(a, b)
}
当我做了'range a',编译器说你不能迭代[] interface {} – user3534472
你有什么版本的go?键入'go version',它工作正常http://play.golang.org/p/R441h4fVMw – OneOfOne
正如其他人所说,你应该迭代切片并逐个转换对象。 是更好地使用范围内式开关,以避免恐慌:
a := []interface{}{1, 2, 3, 4, 5}
b := make([]int, len(a))
for i, value := range a {
switch typedValue := value.(type) {
case int:
b[i] = typedValue
break
default:
fmt.Println("Not an int: ", value)
}
}
fmt.Println(a, b)
Func键返回值是接口{},但实际收益值是[]接口{},那么试试这个相反:
func main() {
values := returnValue.([]interface{})
for i := range values {
fmt.Println(values[i])
}
}
你能否包括代码? (ps:[] int不是整数数组,它是整数的一部分)。 –
您需要使用范围迭代接口{}的切片,并将断言的整数复制到新切片中。 – elithrar
向我们展示您尝试过的方式,以便我们帮助您解决问题。 –