我正在使用docopt来解析命令行参数。这是有效的,它会产生一张地图,例如
map[<host>:www.google.de <port>:80 --help:false --version:false]
现在我想将host和port值连接到一个字符串,两个值之间有一个冒号。基本上,例如:
host
port
host := arguments["<host>"] + ":" + arguments["<port>"]
不幸的是,这不起作用,因为我收到错误消息:
无效操作:arguments[“”] + “:”(不匹配的类型 interface {} 和 string)
所以显然我需要将从地图中得到的值(它只是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