Go 在运行时实例化结构的最佳方法是什么?

Go 在运行时实例化结构的最佳方法是什么?,go,design-patterns,Go,Design Patterns,我目前正在编写一个缓存包装器,它将读取配置并返回缓存类型(redis/memecache) 现在我有 redis.go和memcache.go具有如下功能 initialize()、getCache()、setCache() 我的缓存包装器是我的入口点,它返回 Redis或Memcache作为“字符串” 作为输出。现在我想根据字符串调用redis/memcache的initialize函数。我该怎么做 我想确保这个缓存包装器的实现是非常通用的,即使我明天添加另一个缓存类型(例如:aerospik

我目前正在编写一个缓存包装器,它将读取配置并返回缓存类型(redis/memecache)

现在我有
redis.go
memcache.go
具有如下功能

initialize()、getCache()、setCache()

我的缓存包装器是我的入口点,它返回

Redis或Memcache作为“字符串”

作为输出。现在我想根据字符串调用redis/memcache的initialize函数。我该怎么做

我想确保这个缓存包装器的实现是非常通用的,即使我明天添加另一个缓存类型(例如:aerospike),我甚至不应该是更改缓存包装器文件的人


它应该独立于缓存变量的数量和类型。

检查字符串的值。如果是“redis”,则调用redis初始化。如果是“memache”,则调用memcache初始化。@pdexter你的意思是开关大小写?@LokanadhamMotumarri,可以了。@Rahul好的,我认为这与原始帖子中的问题不同。现在介绍如何在不更改dispatcher的情况下为新变体添加新功能。例如,为此您可以保留一个映射,该映射将字符串映射到初始化函数。另一种选择是使用接口,其中结构是使用字符串的值创建的。@Rahul请用您想要实现的内容编辑您的问题。