回答

收藏

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

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

我正在使用docopt分析命令行参数。这是有效的,它会产生地图,比如7 K! _- I; A& M! F
    map[:www.google.de :80 --help:false --version:false]
    # |) y/ R$ k- V; a2 j
现在我想将host和port值连接到字符串,两个值之间有冒号。基本上,例如:* A1 N' g, Q/ ^+ ~, t* s
    host := arguments[""]   ":"   arguments[""]
    1 o; ~; @7 j" M% W3 _3 K- v* i
不幸的是,这不起作用,因为我收到了错误的消息:
" M- D$ Q7 m, y) \6 [无效操作:arguments[“”]   “:”(不匹配类型 interface 和 string)
! R- C3 ^. G, \) Z4 t
所以很明显,我需要从地图上得到值(它只是interface{},所以它可以是任何东西)转换成字符串。现在我的问题是,我该怎么办?
# [; W7 T, N) k6 b7 X2 i                                                                + D4 Z; s. {" |+ ^* E
    解决方案:                                                                0 v, E) |5 {$ Z* W. s, t
                                                                您需要添加类型断言 .(string)。这是必要的,因为地图是类型map[string]interface{}:
6 r: |3 n7 r  i  L/ J% @  B# F
    host := arguments[""].(string)   ":"   arguments[""].(string); k& w5 g. Q- I' l- W5 {
Docopt返回最新版本OPTS对象,转换方法:6 D! B' [( j+ u* {
    host,err := arguments.String("")port,err := arguments.String("")host_port := host   ":"   port
    & |6 D. y- w  I% q
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则