使用变量对结构进行切片

时间:2017-08-01 20:56:04

标签: go struct type-conversion go-reflect

在我的函数中,我有一个Product结构的变量,但我无法访问Product结构,我想从它的变量中得到一个Product的变量,例如:

test1 := Product{}

....
....
....

test2 := []TypeOf(test1)

我该怎么做?

更新: 我想要实际实现的目标是什么?

我有一些想要在适配器中用于gorm的结构。

在我的适配器中,例如我有一个FindAll方法需要切片我的一个结构。

我的所有结构都在一个名为Domains的包中,我不想从使用(调用)FindAll函数的地方发送所需的变量。

现在我将所有结构注册到Map并使用struct name在适配器中获取它们 但结果是该结构的变量而不是该结构的类型,因此我无法从中生成另一个变量或者对其进行切片。

2 个答案:

答案 0 :(得分:2)

您可以使用reflection执行此操作,特别是TypeOfSliceOfMakeSlice然而,它不会使用非常有用,因为您只能将其作为interface{}引用,您无法像切片一样使用它。或者,您可以将其分配给[]interface{}类型的切片,这样可以让您使用切片,但是再次,无法引用基础类型,您无法对值进行任何操作。您可能需要重新考虑您的设计。

答案 1 :(得分:0)

你想要一个带有test1元素的Product片段吗?

in fragPos[2]