GO语言map

map
类似于哈希表或者字典,以key-value形式存储数据
key必须是支持==或!=比较运算的类型,不可以是函数,map或slice
可以用slice或者数组,则这俩有限,最后才用map
使用make创建
map的简单操作

package main
import "fmt"

func main(){
  var  m1 map[int]string
  m1=map[int]string{}//must have
  m2:=make(map[int]string)//the way to construct the map
  m1[1]="OK"
  fmt.Println(m1)
  fmt.Println(m2)
  fmt.Println(m1[1])
  //delete
  delete(m1,1)//delete the 1 in m1
  fmt.Println(m1)
  fmt.Println(m1[1])//NULL if delete
}

复杂map的初始化

package main
import "fmt"

func main(){
 var m map[int]map[int]string
 m=make(map[int]map[int]string)//init the first
 m[1]=make(map[int]string)//only the m[1] has been initialized
 m[1][1]="OK"
 fmt.Println(m)
}

map是否有被初始化的检验

package main
import "fmt"

func main(){
 var m map[int]map[int]string
  m=make(map[int]map[int]string)//init the first
  a,ok:=m[2][1]
  fmt.Println(a,ok)//the way the know whether the m has been initialized
  if !ok{
   m[2]=make(map[int]string)
  }
  m[2][1]="GOOD"
  a,ok=m[2][1]
  fmt.Println(a,ok)
}

有关map的迭代操作

package main
import "fmt"

func main(){

  sm:=make([]map[int]string,5)
  for _,v:=range sm{
    v=make(map[int]string,1)//v is copy has no influence to sm
    v[1]="OK"//if we have i then change sm[i] is useful
    fmt.Println(v)
//  sm[i] = make(map[int]string,1)
//  sm[i][1] = "OK"
//  fmt.Println(sm[i])
  }
  fmt.Println(sm)

}

有关map的转移和排序

package main

import "fmt"
import "sort"

func main(){

  m:=map[int]string{1:"a",2:"b",3:"c",4:"d",5:"e"}
  m2:=make(map[string]int,len(m))
  s:=make([]int,len(m))
  i:=0
  for k,_:=range m{
   m2[m[k]]=k
   s[i]=k
   i++
  }//let the value of map to s
 sort.Ints(s) //map doesn't have order
 fmt.Println(s)
 fmt.Println(m2)
}
}

GO关于map的晨读:
https://studygolang.com/articles/10720

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值