切片作为地图中的关键

 豪哥帅366 发布于 2023-02-13 17:55

是否可以使用切片作为键?

有我的尝试:

h := map[[]string]string{
  []string{"a", "b"} : "ab",
}

编译器给我一个错误invalid map key type []string.所以要么它不可能,要么我声明错误(如果是这样,那将是一个正确的方法?).

3 个回答
  • Volker已经告诉过这是不可能的,我将通过规范中的例子给出一些更详细的信息.


    地图规格告诉您:

    必须为键类型的操作数完全定义比较运算符==和!=; 因此,键类型不能是函数,映射或切片.

    它已经告诉你切片不能是一个键,但你也可以在比较规范中检查它:

    切片,贴图和函数值无法比较.


    这意味着切片也不能成为密钥,数组也可以是密钥.例如,您可以写:

    h := map[[2]string]string{
      [2]string{"a", "b"} : "ab",
    }
    

    2023-02-13 17:59 回答
  • 不,切片不能用作映射键,因为没有定义相等.

    2023-02-13 17:59 回答
  • 但是,可以使用数组作为映射键:

    package main
    
    import "fmt"
    
    func main() {
        m := make(map[[2]int]bool)
        m[[2]int{1, 2}] = false
        fmt.Printf("%v", m)
    }
    

    2023-02-13 17:59 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有