我创建了一个这样的地图:
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]
}
我得到以下错误:'不能使用num(类型int64)作为地图索引中的int类型'
为什么会出现此错误?如何访问地图中的密钥?
答案 0 :(得分:5)
您只需要将int64转换为int。像这样:
checkers.board[int(num)]
但是,如果您只想从字符串中解析int,则应使用strconv.AtoI
。它将返回(int,error),因此您不必转换它。另外,请记住,当前编写代码的方式不适用于2位数字或2个字母的前缀。这可能是设计上的。
答案 1 :(得分:3)
使用
num, err := strconv.Atoi(string(coordinates[1]))
返回int
。
func Atoi(s string) (i int, err error)
Atoi
是ParseInt(s, 10, 0)
的缩写。