Go基础之Map

本文主要介绍了Go语言中Map的相关知识,包括Map的结构、创建方式、遍历方法、取值操作、删除操作以及可作为Key的类型。指出Go中Map无序,取值时最好做存在性判断,还对比了Go与Java中作为Key类型的条件差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 初识Map

m := map[string]string{

    "name": "xiaoming",

    "course": "golang",

}

  • Map的结构:

  1> map[K的类型]V的类型

  2> 复合Map   map[K1]map[K2]V 

 

  • Map的创建:

 方式一

m := map[string]string{

    "name": "xiaoming",

    "course": "golang",

}

 

方式二 (常用)

m := make(map[int]string)         // m==empty map

 

方式三

var m map[string]int                   // m==nil   go中的nil是可以参与运算的,这和其它语言中的null不同

  • Map的遍历
  • go中,Map是一个无序的字典,每次遍历出的结果可能都不一样,如需顺序,需要手动给key排序(将key放到一个slice中,slice是有序的)
  • 可以通过len(m)获得m中元素的个数

for k, v := range m{

}

 

for k := range m{

}

 

for _, v := range m{

}

  • 从Map中取值 :  m[k]
  • go中,每创建一个变量后,系统都会自动为其设置一个"Zero value",所以go中的变量不做初始化也可以正常使用   v, ok := m[k]
  • 在从Map中取值时,最好先做个存在性判断,因为即使从一个原本不存在的key中获取值,程序也不会报错,只不过是为你返回的是值原本的"Zero value"

if v, ok := m[k]; ok {          // key的存在性检验,如果key存在,则返回的ok为 "true"

    //operate v

} else {

    fmt.Println("no exist key")

  • Map的删除操作,用delete()删除一个key

delete(m, k的值)    //删除m中 key == k 的元素

  • Map中可以作为Key的类型
  1. 由于Map使用哈希表,所以Key必须可以比较相等
  2. 除了slice, map, function  的内建类型都可以作为Key的类型
  3. Struct类型若其field 不包含"slice, map, function",也可以 作为Key的类型

注:Java中,要作为Key的类型必须重写hashCode()和equals()方法以便可以比较相等,而go中比较简单,只需满足上述条件即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值