1
我想有在Go陣列/切片具有元素(在編譯時未知)的可變參數數目,並能夠dinamically添加不同類型的新的元素,例如:多維切片在Go
data[0] := "string"
data[1] // slice
data[1][0] := "another string"
data[1][1] := 42 // int
這是可能以某種方式?
我想有在Go陣列/切片具有元素(在編譯時未知)的可變參數數目,並能夠dinamically添加不同類型的新的元素,例如:多維切片在Go
data[0] := "string"
data[1] // slice
data[1][0] := "another string"
data[1][1] := 42 // int
這是可能以某種方式?
這是一個有點難看,但有可能使用空接口,interface{}
:
package main
import "fmt"
func main() {
variadic := []interface{}{}
variadic = append(variadic, "foo")
variadic = append(variadic, []interface{}{"bar", 42})
//this will print "foo"
fmt.Println(variadic[0])
//note that you have to cast variadic[1] to an array before accessing it
fmt.Println(variadic[1].([]interface{})[0])
}
如果你讓每個元素都必須是具有不同長度的任何一個數組的假設,這是一個有點不太難看:
package main
import "fmt"
func main() {
variadic := [][]interface{}{}
variadic = append(variadic, []interface{}{"foo"})
variadic = append(variadic, []interface{}{"bar", 42})
fmt.Println(variadic[0])
fmt.Println(variadic[1][0])
fmt.Println(variadic[1][1])
}
確實醜陋,但我想它確實有這個工作。謝謝! –
http://play.golang.org/p/OSPskVlISE –
第二個例子只有在處理2個維度時纔有用,否則它會變得很難看:http://play.golang.org/p/Is2Av34sUs –