go - 用它的变量制作一个结构的 slice

标签 go struct type-conversion go-reflect

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

test1 := Product{}

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

test2 := []TypeOf(test1)

我该怎么做?

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

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

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

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

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

最佳答案

您可以使用 reflection 执行此操作,特别是 TypeOfSliceOfMakeSlice但是,它不会很有用,因为您可以仅获取对它的引用作为 interface{},您不能像 slice 一样使用它。或者,您可以将它分配给 []interface{} 类型的 slice ,这样您就可以使用该 slice ,但同样,如果不能引用底层类型,您不能真正对这些值做任何事情。您可能需要重新考虑您的设计。

关于go - 用它的变量制作一个结构的 slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45447571/

相关文章:

Java - 如何使用自定义类型调用 oracle 过程?

c - 结构数组函数参数

date - Grails "Unparseable Date"错误

go - 按行值对 [][]string(二维 slice )进行分组

ubuntu - kubernetes 在 ubuntu 中找不到正确的 go

go - 如何让多个请求爆发等待首先完成(分布式)

java - lambda 表达式的隐式类型转换

go - 为什么 Golang 不能从带有前小写字符的结构生成 json?

c++ - 将结构传递给函数时出现意外结果

c++ - 为什么 GCC 在 std::strchr() 返回值上接受从 'const char *' 到 'char *' 的转换?