我像这样创建一个地图:
board := make(map[int]map[string]string)
Run Code Online (Sandbox Code Playgroud)
我添加了一些数字,因此数据格式如下.
1 : map("a", "b" ..)
Run Code Online (Sandbox Code Playgroud)
然后我传了一个位置."a1"这就是我撞墙的地方.
func (checkers *Checkers) setPiece(piece string, coordinates string) {
lett := string(coordinates[0]);
num, err := strconv.ParseInt(string(coordinates[1]), 0, 64)
if err != nil {
panic("Invalid coordinate format")
}
row := checkers.board[num]
}
Run Code Online (Sandbox Code Playgroud)
我得到以下错误:'不能使用num(类型int64)作为地图索引中的int类型'
为什么我会收到此错误?如何访问地图中的密钥?
你只需要从int64转换为int.像这样:
checkers.board[int(num)]
Run Code Online (Sandbox Code Playgroud)
但是,如果您只想从字符串中解析出一个int,那么您应该使用strconv.AtoI它.它将返回(int,error),因此您不必转换它.另外,请记住,当前编写代码的方式不适用于2位数字或2个字母的前缀.这可能是设计上的.