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

标签 go

我像这样创建一个 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/

相关文章:

json - 如何将 JSON 转换为关联/索引数组

forms - http.Request r.FormValue 什么都不返回/map[]

go - 如何格式化包含动态数量元素的字符串?

pointers - 使用接口(interface)时操作结构字段

go - 如何更改配置文件中的值未提供该值

go - 为什么结果与标志 "-race"不同?

node.js - 关于微服务架构的问题

Golang,解析xml来构造?

go - 错误 : Non-standard import "gopkg.in/yaml.v2" in standard package

go - 来自 os.Stat/Lstat 的目录大小