为了账号安全,请及时绑定邮箱和手机立即绑定

Go 中的多维切片

Go 中的多维切片

Go
万千封印 2021-07-12 13:09:33
我想在 Go 中有一个数组/切片,其中包含可变数量的元素(在编译时未知),并且能够动态添加不同类型的新元素,例如:data[0] := "string"data[1] // slice data[1][0] := "another string"data[1][1] := 42 // int 这有可能吗?
查看完整描述

1 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

这有点难看,但可以使用空接口,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])


    }


查看完整回答
反对 回复 2021-07-19
  • 1 回答
  • 0 关注
  • 242 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信