gpt4 book ai didi

go - golang中不同类型的 slice

转载 作者:IT老高 更新时间:2023-10-28 13:10:49 25 4
gpt4 key购买 nike

上下文:我想使用 golang 中的 slice 数据结构来制作二维特征向量。这个特征向量应该是一个由不同类型的 slice 组成的 slice ,有时是字符串、int、float64 等。

到目前为止,我可以通过 map (如下)来实现这一点,有没有办法通过 slice 来实现?

map := make(map[int]interface{}}

应该更像:

featureVector := []interface{[]int, []float64, []string ...}

最佳答案

它按预期工作,您只是使用了错误的语法。 slice 的元素类型是interface{},所以是composite literal初始化它应该看起来像 []interface{}{ ... },就像在这个例子中:

featureVector := []interface{}{[]int{1, 2}, []float64{1.2, 2.2}, []string{"a", "b"}}

您可以像对待任何其他 slice 一样对待它:

featureVector = append(featureVector, []byte{'x', 'y'})
fmt.Printf("%#v", featureVector)

输出(在 Go Playground 上尝试):

[]interface{}{[]int{1, 2}, []float64{1.2, 2.2}, []string{"a", "b"}, []uint8{0x78, 0x79}}

但是要知道,由于元素类型是 interface{},没有什么可以阻止任何人附加非 slice :

featureVector = append(featureVector, "abc") // OK

这也适用于 map 解决方案。

关于go - golang中不同类型的 slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39474715/

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