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

标签 go

我正在使用 docopt解析命令行参数。这行得通,它会产生一张 map ,例如

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

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

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/

相关文章:

go - []interface{}{}中的双花括号是什么意思

go - 为什么 post 请求在 gin golang 中不起作用?

go - 在go中合并两个结构(相同类型)?

azure - 为什么这个简单的 Go 服务器不在 Azure 应用服务中运行?

python - 使用 `gopy` ,如何正确地将 []string 从 Python 传递给 Go?

regex - 编译正则表达式时出现 panic

go - 有什么办法可以推到golang的 channel 前面吗?

go - 无法控制父初始化时初始化嵌入式结构

sql - Golang sql 包查询比 PostgreSQL SQL 查询慢

go - 在2019年1月1日至2019年1月1日之间的go lang中设置日期格式