为什么我不能用int访问map键?

Com*_*ser 1 go

我像这样创建一个地图:

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类型'

为什么我会收到此错误?如何访问地图中的密钥?

Log*_*tor 5

你只需要从int64转换为int.像这样:

checkers.board[int(num)]
Run Code Online (Sandbox Code Playgroud)

但是,如果您只想从字符串中解析出一个int,那么您应该使用strconv.AtoI它.它将返回(int,error),因此您不必转换它.另外,请记住,当前编写代码的方式不适用于2位数字或2个字母的前缀.这可能是设计上的.