上下文:我想在golang中使用切片数据结构来制作二维特征向量.此特征向量应该是由不同类型的切片组成的切片,有时是字符串,int,float64等.
到目前为止,我可以使用地图(下图)实现这一点,有没有办法用切片实现这个?
map := make(map[int]interface{}}
Run Code Online (Sandbox Code Playgroud)
应该更像是什么:
featureVector := []interface{[]int, []float64, []string ...}
Run Code Online (Sandbox Code Playgroud)
它按预期工作,你只是使用错误的语法.切片的元素类型是interface{}
,因此初始化它的复合文字应该如下所示[]interface{}{ ... }
,如下例所示:
featureVector := []interface{}{[]int{1, 2}, []float64{1.2, 2.2}, []string{"a", "b"}}
Run Code Online (Sandbox Code Playgroud)
你可以像任何其他切片一样对待它:
featureVector = append(featureVector, []byte{'x', 'y'})
fmt.Printf("%#v", featureVector)
Run Code Online (Sandbox Code Playgroud)
输出(在Go Playground上试试):
[]interface{}{[]int{1, 2}, []float64{1.2, 2.2}, []string{"a", "b"}, []uint8{0x78, 0x79}}
Run Code Online (Sandbox Code Playgroud)
但是要知道,因为元素类型是interface{}
,没有什么能阻止任何人附加非切片:
featureVector = append(featureVector, "abc") // OK
Run Code Online (Sandbox Code Playgroud)
这也适用于map
解决方案.