String Can';t在字符串映射中使用字符串的基础类型:";无法使用<;xxx>;(键入<;yyy>;)作为映射索引中的类型字符串;
我有基本类型的字符串:String Can';t在字符串映射中使用字符串的基础类型:";无法使用<;xxx>;(键入<;yyy>;)作为映射索引中的类型字符串;,string,go,String,Go,我有基本类型的字符串:类型功能字符串 我想将其用作字符串映射中的字符串,但我遇到了一个错误: 无法将cap(类型功能)用作映射索引中的类型字符串 这是我的代码: package main import ( "fmt" ) type Capability string var caps_list = map[string]int { "HOME" : 1, } func main() { var cap Capability // string cap =
类型功能字符串
我想将其用作字符串映射中的字符串,但我遇到了一个错误:
无法将cap(类型功能)用作映射索引中的类型字符串
这是我的代码:
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]))
}
为什么它不接受呢?它毕竟是一根弦
您可以在此处尝试我的代码:不,它不是字符串。它是一个类型,其中基类型是一个字符串
所以确切的类型很重要。您也不能将celcius添加到华氏度,即使这两种类型都有整数基类型。只需更改为在cap上使用
字符串即可:
fmt.Print(string(caps_list[string(cap)]))
您的地图具有string
类型的键,因此您必须使用string
,而不是Capability
。这很容易,因为您可以将功能转换为字符串。@Volker如何转换?使用strconvstrconv
?没有看到执行此操作的选项。我也尝试了字符串(cap),但我遇到了其他错误