我正在使用 docopt解析命令行参数。这行得通,它会产生一张 map ,例如
map[<host>:www.google.de <port>:80 --help:false --version:false]
现在我想将 host
和 port
值连接到一个字符串,两个值之间有一个冒号。基本上,例如:
host := arguments["<host>"] + ":" + arguments["<port>"]
不幸的是,这不起作用,因为我收到错误消息:
invalid operation: arguments[""] + ":" (mismatched types interface {} and string)
很明显,我需要将从 map 中获得的值(只是interface{}
,所以它可以是任何东西)转换为字符串。现在我的问题是,我该怎么做?
最佳答案
您需要添加type assertion .(字符串)
。这是必要的,因为 map 是 map[string]interface{}
类型的:
host := arguments["<host>"].(string) + ":" + arguments["<port>"].(string)
Docopt 最新版本返回 Opts具有转换方法的对象:
host, err := arguments.String("<host>")
port, err := arguments.String("<port>")
host_port := host + ":" + port
关于go - 如何将 interface{} 转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27137521/