小编典典

如何将 interface{} 转换为字符串?

go

我正在使用docopt来解析命令行参数。这是有效的,它会产生一张地图,例如

map[<host>:www.google.de <port>:80 --help:false --version:false]

现在我想将hostport值连接到一个字符串,两个值之间有一个冒号。基本上,例如:

host := arguments["<host>"] + ":" + arguments["<port>"]

不幸的是,这不起作用,因为我收到错误消息:

无效操作:arguments[“”] + “:”(不匹配的类型 interface {} 和 string)

所以显然我需要将从地图中得到的值(它只是interface{},所以它可以是任何东西)转换为一个字符串。现在我的问题是,我该怎么做?


阅读 303

收藏
2021-11-12

共1个答案

小编典典

您需要添加类型断言 .(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
2021-11-12