比如说:
type client struct{} var s :="client" var b := new (s) //get a struct client
背景:有一些变量像client_1,client_2。现在我尝试通过请求参数client(作为字符串)来检查client_x是否存在。结果是:
client_1
client_2
client_3
然后我可以检索变量client_1并使用它。
kr98yfug1#
你不能有map的类型,如果这就是你要问的:
map
package something // syntax error: unexpected type, expecting type var types = make(map[string]type)
但是您可以Mapinterface{},并将每个类型设置为默认值:
interface{}
package main var types = map[string]interface{}{"bool": false, "int": 0, "string": "hello"} func main() { s := types["string"] t := s.(string) println(t == "hello") }
chy5wohz2#
最好的情况是,如果您想按名称创建一个新类型,您可以将工厂函数放在Map中。
type client struct{} var types = map[string]func()interface{}{ "client": func() interface{} { return new(client) }, }
类型map[string]func()interface{}只是“从字符串到不带参数并返回interface{}的函数的Map“。然后可以按名称调用工厂函数:
map[string]func()interface{}
func main() { s := "client" b := types[s]() _ = b }
您可以为函数的返回类型选择interface{}或更具体的接口,但Map中所有函数的类型必须相同。
2条答案
按热度按时间kr98yfug1#
你不能有
map
的类型,如果这就是你要问的:但是您可以Map
interface{}
,并将每个类型设置为默认值:chy5wohz2#
最好的情况是,如果您想按名称创建一个新类型,您可以将工厂函数放在Map中。
类型
map[string]func()interface{}
只是“从字符串到不带参数并返回interface{}
的函数的Map“。然后可以按名称调用工厂函数:
您可以为函数的返回类型选择
interface{}
或更具体的接口,但Map中所有函数的类型必须相同。