我如何可以通过包名称列表中的所有结构和方法,或结构的名称来创建一个结构实例,如
```go
package test
type User struct {
Name string
}
func getStructNameByPackageName(packageName string) []string{
...
}
func createStructInstance(structName string) interface{}{
...
}
```
调用函数getstructnamebypackagename(“test”)我们将得到结果:['User']
调用函数createstructinstance(“test.User”)我们将得到结果:一个用户实例
我在网上浏览了很多网页,但是大多数人说不能这么做。如果可以的话,请告诉我,非常感谢。
以我自己web工具库的某个缓存驱动的测试代码为例
https://github.com/herb-go/herb/blob/master/cache/drivers/freecache/freecache_test.go
config := json.RawMessage("{\"Size\": 10000000}")
c := cache.New()
err := c.Init(cache.OptionJSON("freecache", config, ttl))
而freecache只是我的驱动中的一种,我的驱动目前有6中
https://github.com/herb-go/herb/tree/master/cache/drivers
通过指定不同的字符串,比如 freecache,sqlcache,rediscache,redisluacache,hashcache,cachegroup。
可以创建不同的实例。
你要得就是这样的东西吧?
#5
更多评论