一尘不染

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

go

我正在使用docopt来解析命令行参数。此方法有效,并生成地图,例如

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

现在,我想将hostand和port值连接到一个字符串,两个值之间用冒号表示。基本上,诸如:

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

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

无效的操作:arguments [“”] +“:”(类型不匹配的接口{}和字符串)

因此,显然我需要将从映射中获得的值(就是interface{},所以可以是任何东西)转换为字符串。现在我的问题是,我该怎么做?


阅读 543

收藏
2020-07-02

共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
2020-07-02