回答

收藏

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

技术问答 技术问答 286 人阅读 | 0 人回复 | 2023-09-12

我正在使用docopt分析命令行参数。这是有效的,它会产生地图,比如7 q# |# |0 U4 f5 u+ i
    map[:www.google.de :80 --help:false --version:false]
    5 M0 x- E% Q1 C. G
现在我想将host和port值连接到字符串,两个值之间有冒号。基本上,例如:$ _7 f2 d; |9 Q% d6 b, z9 v
    host := arguments[""]   ":"   arguments[""]) R- ]# l7 [$ y" u3 H5 Z. n/ @
不幸的是,这不起作用,因为我收到了错误的消息:
4 A' h, ]' F/ z9 q6 o+ s4 Q无效操作:arguments[“”]   “:”(不匹配类型 interface 和 string)
. ]* z# v. @" K, c" `4 H# J
所以很明显,我需要从地图上得到值(它只是interface{},所以它可以是任何东西)转换成字符串。现在我的问题是,我该怎么办?4 i( `! w; s! |! `
                                                               
: E( d- Q* M2 b, S( \: B  e6 N6 b# C    解决方案:                                                                & l8 Y1 I& r% n9 u' o0 v5 i, m
                                                                您需要添加类型断言 .(string)。这是必要的,因为地图是类型map[string]interface{}:
$ h- {* O$ J% B: X
    host := arguments[""].(string)   ":"   arguments[""].(string)
    # \& Q2 \; n9 f  G' A! k
Docopt返回最新版本OPTS对象,转换方法:9 u7 n( H6 K1 x+ _- M1 N
    host,err := arguments.String("")port,err := arguments.String("")host_port := host   ":"   port- s3 K" s" n2 G) v9 l
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则