首页 > 解决方案 > Golang 中的 Activator.CreateInstance() 类似物

问题描述

C#中,有一个CreateInstance类方法Activator允许您创建反射类型的实例,如此处所示

有没有办法在Go编程语言中做同样的事情?我想通过类型的名称从插件(Linux上的 .so 或Windows上的.dll )中获取一个类型,并在我的代码中创建一个这种类型的实例。我怎样才能做到这一点?

标签: gopluginsreflection

解决方案


有没有办法在 Go 编程语言中做同样的事情?

不。

我想通过类型的名称从插件(Linux 上的 .so 或 Windows 上的 .dll)中获取一个类型,并在我的代码中创建一个这种类型的实例。我怎样才能做到这一点?

你不能。对不起。你必须重新设计。Go 不是 C# 并且有不同的规则。一条规则是您不能仅通过名称创建类型的实例。但是,如果您的插件通过某种注册表(想想包图像)宣布它包含哪些类型及其名称,那么您的主代码可以在该注册表中查找名称和类型并正常反映。


推荐阅读