我像这样创建一个 map :
board := make(map[int]map[string]string)
我向其中添加了一些数字,因此数据的格式如下。
1 : map("a", "b" ..)
然后我传递一个位置。 “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]
}
我收到以下错误:“无法在 map 索引中使用 num(int64 类型)作为 int 类型”
为什么会出现此错误?如何访问 map 中的键?
最佳答案
您只需将 int64 转换为 int。像这样:
checkers.board[int(num)]
但是,如果您只想从字符串中解析出一个 int,您应该为此使用 strconv.AtoI
。它会返回 (int, error) 所以你不必转换它。另外,请记住,您的代码当前编写方式不适用于 2 位数字或 2 位字母前缀。这可能是设计使然。
关于go - 为什么我不能使用 int 访问 map 键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24874341/