Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.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 如何在Go中获得包中定义的实现接口的所有类型?_Reflection_Go - Fatal编程技术网

Reflection 如何在Go中获得包中定义的实现接口的所有类型?

Reflection 如何在Go中获得包中定义的实现接口的所有类型?,reflection,go,Reflection,Go,如果我有结构: api > v1 > *.go 我希望能够导入api.v1,并从中反映出其中定义的满足http.Handler的任何类型 我已经对类型和方法进行了反思,但我似乎不知道如何检查包含包v1声明的任何东西,并提取其中定义的所有类型。这不可能吗 谢谢 如果不使用导入的代码,编译器将不会包含它,因此我认为这是不可能的 如果您正在以某种方式运行代码(因此包含了它),那么您最好让它调用一个register函数来注册自己 围棋中的编程通常不包括你所要求的那种“魔力”。起初,我觉得这

如果我有结构:

api > v1 > *.go
我希望能够
导入api.v1
,并从中反映出其中定义的满足http.Handler的任何类型

我已经对类型和方法进行了反思,但我似乎不知道如何检查包含
包v1
声明的任何东西,并提取其中定义的所有类型。这不可能吗


谢谢

如果不使用导入的代码,编译器将不会包含它,因此我认为这是不可能的

如果您正在以某种方式运行代码(因此包含了它),那么您最好让它调用一个register函数来注册自己


围棋中的编程通常不包括你所要求的那种“魔力”。起初,我觉得这对我来说很有限,但过了一段时间我就习惯了,现在我明白了,如果这有道理的话,事情就是这样。

我强烈感觉到,无论遇到什么问题,你都会从错误的角度来处理。考虑采用包映像的方法,并让每个实现在初始化过程中登记自己。当我这样做的时候,感觉干净多了。谢谢我发现了init()和uuImports,这似乎让我以一种更好的方式重新思考了这个问题。谢谢杰出的玩得开心点,我知道我玩围棋的时候也是这样。:-)