gpt4 book ai didi

arrays - Go 中的多维 slice

转载 作者:IT王子 更新时间:2023-10-29 01:34:02 24 4
gpt4 key购买 nike

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

data[0] := "string"
data[1] // slice
data[1][0] := "another string"
data[1][1] := 42 // int

这有可能吗?

最佳答案

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

}

关于arrays - Go 中的多维 slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21073192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com