Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reflection 结构类型_Reflection_Go - Fatal编程技术网

Reflection 结构类型

Reflection 结构类型,reflection,go,Reflection,Go,在Go中是否可以从结构本身检索reflect.Type 伪: type MyStruct struct { Name string } type := reflect.TypeOf(MyStruct) 有没有可能在事后制作出这种类型的切片 更新: 我知道这个问题的reflect.TypeOf((*t1)(nil)).Elem()解决方案。我正在寻找一个更好的解决办法,因为我觉得这很不友好。我会尽力解释一下情况 在数据库模型之上开发“通用”数据服务时,我想做如下工作: ds := NewD

在Go中是否可以从结构本身检索reflect.Type

伪:

type MyStruct struct {
  Name string
}

type := reflect.TypeOf(MyStruct)
有没有可能在事后制作出这种类型的切片

更新: 我知道这个问题的
reflect.TypeOf((*t1)(nil)).Elem()
解决方案。我正在寻找一个更好的解决办法,因为我觉得这很不友好。我会尽力解释一下情况

在数据库模型之上开发“通用”数据服务时,我想做如下工作:

ds := NewDataService(db.Collection("MyStruct"), MyStruct)
其中DataService能够使用该模型进行查找、插入等操作。因此,我需要传递结构,以便能够正确使用模型(例如http服务器)

第二部分是必需的,因为
Find
应该返回找到的对象的切片


因为我使用的是Mongo,所以在db.Collection中没有类似的模式可供使用:它是

对于第二部分:之后制作该类型的切片:

您可以通过使用获得其元素类型与您已有类型相同的切片的类型,并且可以使用函数创建此类类型的切片。它返回一个,您可以使用它的方法获得一个
接口{}
,如果需要将结果作为
[]MyStruct
的类型,可以在该接口上使用:

tt := reflect.TypeOf((*MyStruct)(nil)).Elem()
fmt.Println(tt)

ms := reflect.MakeSlice(reflect.SliceOf(tt), 10, 20).Interface().([]MyStruct)
ms[0].Name="test"
fmt.Println(ms)
输出():


可能重复我更新了问题
main.MyStruct
[{test} {} {} {} {} {} {} {} {} {}]