【问题标题】:Can't use underlying type of string inside map of string: "cannot use <xxx> (type <yyy>) as type string in map index" [duplicate]不能在字符串映射中使用底层字符串类型:“不能使用 <xxx>(类型 <yyy>)作为映射索引中的类型字符串”[重复]
【发布时间】:2020-01-17 09:23:23
【问题描述】:

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

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

不能在地图索引中使用 cap (type Capability) 作为类型字符串

这是我的代码:

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]))
}  

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

你可以在这里试试我的代码:
https://play.golang.org/p/r-h9Hu8_eoM

【问题讨论】:

  • 你的地图有string类型的键,所以你必须使用string而不是Capability。这很容易,因为您可以将 Capability 转换为字符串。
  • @Volker 我该如何交谈?与strconv ?没有看到这样做的选项。
  • 我也尝试过 string(cap) 但我遇到了其他错误

标签: string go


【解决方案1】:

不,它不是字符串。它是一种类型,基本类型是字符串。

所以确切的类型很重要。您也不能将摄氏度添加到华氏度,即使这两种类型都有整数基类型。

【讨论】:

    【解决方案2】:

    只需要更改为在帽子上使用string

    fmt.Print(string(caps_list[string(cap)]))  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-26
      • 2021-01-14
      • 1970-01-01
      • 2019-12-12
      • 2021-08-22
      • 1970-01-01
      相关资源
      最近更新 更多