用它的变量制作一个结构的切片
Make slice of a struct with a variable of it
在我的函数中,我有一个 Product 结构变量,但我无法访问 Product 结构,我想从它的变量中制作一个 Product 片段,例如:
test1 := Product{}
....
....
....
test2 := []TypeOf(test1)
我该怎么做?
更新:
我真正想要实现的目标是什么?
我有一些结构想在 gorm 的适配器中使用。
例如,在我的适配器中,我有一个 FindAll 方法需要我的一个结构的切片。
我所有的结构都在一个名为 Domains 的包中,我不想从使用(调用)FindAll 函数的地方发送所需的变量。
现在我将所有结构注册到 Map 并使用结构名称在适配器中获取它们
但结果是该结构的变量而不是该结构的类型,因此我不能从中创建另一个变量或从中创建一个变量。
您可以使用 reflection 执行此操作,特别是 TypeOf
、SliceOf
和 MakeSlice
、,但是 ,它不会很有用,因为您只能将它作为 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)
}
在我的函数中,我有一个 Product 结构变量,但我无法访问 Product 结构,我想从它的变量中制作一个 Product 片段,例如:
test1 := Product{}
....
....
....
test2 := []TypeOf(test1)
我该怎么做?
更新: 我真正想要实现的目标是什么?
我有一些结构想在 gorm 的适配器中使用。
例如,在我的适配器中,我有一个 FindAll 方法需要我的一个结构的切片。
我所有的结构都在一个名为 Domains 的包中,我不想从使用(调用)FindAll 函数的地方发送所需的变量。
现在我将所有结构注册到 Map 并使用结构名称在适配器中获取它们 但结果是该结构的变量而不是该结构的类型,因此我不能从中创建另一个变量或从中创建一个变量。
您可以使用 reflection 执行此操作,特别是 TypeOf
、SliceOf
和 MakeSlice
、,但是 ,它不会很有用,因为您只能将它作为 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)
}