我使用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
向我們展示您嘗試過的方式,以便我們幫助您解決問題。 –