0

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

test1 := Product{}

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

test2 := []TypeOf(test1)

我怎样才能做到这一点?

更新:我想实际实现什么?

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

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

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

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

4

2 回答 2

2

您可以使用反射来做到这一点,特别是TypeOf,SliceOfMakeSlice但是,它不会很有用,因为您只能将它的引用作为interface{},而不能像切片一样使用。或者,您可以将其分配给 type 的切片[]interface{},这样您就可以使用切片,但同样,如果无法引用底层类型,您实际上无法对这些值做任何事情。您可能需要重新考虑您的设计。

于 2017-08-01T21:00:13.250 回答
0

您想要带有 test1 元素的 Product 切片吗?

package main

import "fmt"

type Product struct{
    Price float64
}

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

   test2 := []Product{test1}
   fmt.Println(test2)
}
于 2017-08-01T21:03:12.983 回答