猿问

Go 中的多维切片

我想在 Go 中有一个数组/切片,其中包含可变数量的元素(在编译时未知),并且能够动态添加不同类型的新元素,例如:


data[0] := "string"

data[1] // slice 

data[1][0] := "another string"

data[1][1] := 42 // int 

这有可能吗?


万千封印
浏览 243回答 1
1回答

猛跑小猪

这有点难看,但可以使用空接口,interface{}:package mainimport "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 mainimport "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])    }
随时随地看视频慕课网APP

相关分类

Go
我要回答