字典
字典(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"])
}
嵌套字典文章来源:https://www.toymoban.com/news/detail-616443.html
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文章来源地址https://www.toymoban.com/news/detail-616443.html
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)
}
到了这里,关于Golang之路---02 基础语法——字典的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!