用它的变量制作一个结构的切片

Make slice of a struct with a variable of it

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

test1 := Product{}

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

test2 := []TypeOf(test1)

我该怎么做?

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

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

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

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

现在我将所有结构注册到 Map 并使用结构名称在适配器中获取它们 但结果是该结构的变量而不是该结构的类型,因此我不能从中创建另一个变量或从中创建一个变量。

您可以使用 reflection 执行此操作,特别是 TypeOfSliceOfMakeSlice,但是 ,它不会很有用,因为您只能将它作为 interface{} 的引用,不能像切片一样使用。或者,您可以将它分配给 []interface{} 类型的切片,这样您就可以使用该切片,但同样,如果无法引用基础类型,您实际上无法对这些值执行任何操作。您可能需要重新考虑您的设计。

您想要包含 test1 元素的 Product 切片吗?

package main

import "fmt"

type Product struct{
    Price float64
}

func main() {
   test1 := Product{Price: 1.00}

   test2 := []Product{test1}
   fmt.Println(test2)
}