Golang之路---02 基础语法——字典

字典

字典(Map 类型),是由若干个 key:value 这样的键值对映射组合在一起的数据结构。

key 不能是切片,不能是字典,不能是函数。

字典初始化

方式:map[KEY_TYPE]VALUE_TYPE

  //1.
  var map1 map[string]int = map[string]int{"fish":80,"beef":69}
  //2.
  map2 := map[string]int{"egg":2}
  //3.
  map3 := make(map[string]int)
  map3["egg"] = 1
  map3["apple"] = 4

字典的相关操作


func main() {
 //声明一个为orders的字典
 var orders map[string]int

 //未初始化的字典为nil,无法直接进行赋值
 if orders == nil{
   //利用make函数进行初始化
   orders = make(map[string]int)
 }

 //如果已经初始化,则可以直接赋值
 orders["fish"] = 20
 //map[fish:20]
 fmt.Println(orders)

 //添加元素 , 如果key已经存在,则直接更新value
 orders["beef"] = 35
 //读取元素,直接使用 [key] 即可 ,如果 key 不存在,也不报错,会返回其value-type 的零值。
 //0
 fmt.Println(orders["pair"])
 //删除元素 使用 delete 函数,如果 key 不存在,delete 函数会静默处理,不会报错。
 delete(orders,"fish")
 //0
 fmt.Println(orders["fish"])

}

嵌套字典

choice := make(map[string]map[string]string)
   choice["考研"] = make(map[string]string,3)
   choice["考研"]["id"]="1"
   choice["考研"]["why"]="提升学历"
   choice["考研"]["school"]="清华附小"
   //map[考研:map[id:1 school:清华附小 why:提升学历]]
   fmt.Println(choice)

判断key是否存在

当key不存在,会返回value-type的零值 ,所以你不能通过返回的结果是否是零值来判断对应的 key 是否存在,因为 key 对应的 value 值可能恰好就是零值。
其实字典的下标读取可以返回两个值,使用第二个返回值表示对应的 key 是否存在,若存在flag2为true,若不存在,则flag2为false

  orders["e"] = 90
  orders["rf"] = 80
  flag1,flag2 := orders["e"]
  //值为90
  if flag2 {
	fmt.Printf("值为%d\n",flag1)
  }else{
	fmt.Printf("值不存在\n")
  }
  //值不存在
  flag3,flag4 := orders["ttt"]
  if flag4{
	fmt.Printf("值为 %d\n",flag3)
  }else{
	fmt.Printf("值不存在\n")
  }

对字典元素进行遍历

func main() {
  
  orders := map[string]int{"beef":78,"pair":12}
  
//1.同时获取key 和 value
for name,price := range orders{
	/*
	key: beef,value: 78
    key: pair,value: 12
	*/
	fmt.Printf("key: %s,value: %d\n",name,price)
}

//2.只获取key
for name := range orders{
	/*
	key: beef
    key: pair
	*/
	fmt.Printf("key: %s\n",name)
}

//3.只获取value,注意这里需要用匿名变量
for _,price := range orders{
	/*
	value: 78
    value: 12
	*/
	fmt.Printf("value: %d\n",price)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值