我正在使用docopt来解析命令行参数。此方法有效,并生成地图,例如
map[<host>:www.google.de <port>:80 --help:false --version:false]
现在,我想将hostand和port值连接到一个字符串,两个值之间用冒号表示。基本上,诸如:
host
port
host := arguments["<host>"] + ":" + arguments["<port>"]
不幸的是,这不起作用,因为我收到了错误消息:
无效的操作:arguments [“”] +“:”(类型不匹配的接口{}和字符串)
因此,显然我需要将从映射中获得的值(就是interface{},所以可以是任何东西)转换为字符串。现在我的问题是,我该怎么做?
interface{}
您需要添加类型断言 .(string)。这是必需的,因为地图的类型是map[string]interface{}:
.(string)
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