dqjmq28248
2019-09-16 14:03
浏览 216
已采纳

无法在字符串映射内使用字符串的基础类型:“不能在映射索引中使用<xxx>(类型<yyy>)作为字符串类型”

This question already has an answer here:

I have underlying type of string: type Capability string.

I wanted to use it as a string inside map of strings but I am getting an error:

cannot use cap (type Capability) as type string in map index

This is my code:

package main

import (
    "fmt"
)


type Capability string
var caps_list = map[string]int {
    "HOME" : 1,
}

func main() {

    var cap Capability // string
    cap = "HOME"
    fmt.Print(string(caps_list[cap]))
}  

Why it doesn't accept it ? it is a string after all.

You can try my code here:
https://play.golang.org/p/r-h9Hu8_eoM

</div>

图片转代码服务由CSDN问答提供 功能建议

此问题已经存在 在这里有答案:

  • 在Go语言中将自定义类型转换为字符串 4个答案 < / span>

    我有基本的字符串类型: type Capability string

    我想将其用作字符串映射中的一个字符串,但出现错误:

    不能使用大写字母( 类型能力)作为地图索引中的类型字符串

    这是我的代码:

     包main 
     \  nimport(
    “ fmt” 
    )
     
     
    type功能字符串
    var caps_list = map [string] int {
    “ HOME”:1,
    } 
     
    func main(){
     \  n var cap功能//字符串
     cap =“ HOME” 
     fmt.Print(string(caps_list [cap]))
    } 
       
     
     

    为什么 不接受吗? 毕竟是一个字符串。

    您可以在此处尝试我的代码:
    https://play.golang.org/p/r-h9Hu8_eoM

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dpfln86244 2019-09-16 14:31
    已采纳

    Just need to change to use string on the cap:

    fmt.Print(string(caps_list[string(cap)]))  
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • drbz99867 2019-09-16 14:15

    No it is not a string. It is a type, wich base type is a string.

    So the exact type is important. You can also not add celcius to fahrenheit degrees, even if both types would have integer base types.

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题