跟着猫哥学Golang[7] - Map

大多数现代化的编程语言都有个类似map的概念,大意就是映射,Go语言也不能例外。

1. Golang里,map映射键到值,以猫哥的粗浅认识,map的作用类似于哈希表或者Python里的字典,只不过比后两者用得更广泛。

map在Golang里是一种数据类型,与Golang的结构体类似,map必须先声明“键值”类型,然后在使用之前必须用 make 来创建。来看个例子:

package main

import "fmt"

func main() {
	//var m map[int]string 其实直接定义也可以的
	m := make(map[int]string)
	m[0]="cero"
	m[1]="uno"
	m[2]="dos"
	fmt.Println(m)
}
#输出:
map[2:dos 0:cero 1:uno]

是不是类似哈希表?存储都是随机的。


2. 如果顶层类型只有类型名的话,可以在文法的元素中省略键名。不过键名不能取消。

package main

import "fmt"

type Person struct {
	Name string
	Age int
	Gender string
}

var m1 = map[int]Person {
	1: {"Li Lei", 14, "male"},
	2: {"Han Meimei", 14, "female"},
}

func main() {
	fmt.Println(m1)
}
#输出:
map[1:{Li Lei 14 male} 2:{Han Meimei 14 female}]


3. map的CRUD

3.1 新增和修改:

非常简单:m[key] = value

3.2 读取:

类似的,怎么都能想到 a := m[key]

3.3 查询:

elem, err = m[key] //err

3.4 删除:

delete(m, key)

3.5 一个map的CRUD例子:

package main

import "fmt"

func main() {
	Grade := make(map[string]int)

	Grade["Excellent"] = 100
	fmt.Println("The value:", Grade["Excellent"])

	Grade["Good"] = 90
	fmt.Println("The value:", Grade["Good"])

	Grade["Fail"] = 59
	delete(Grade, "Fail")
	fmt.Println("The value Fail:", Grade["Fail"])

	Grade["pass"] = 60
	if v, err := Grade["pass"]; err == true {
		fmt.Println("The value:", v, "Present?", err)
	}
}
#输出:
The value: 100
The value: 90
The value Fail: 0
The value: 60 Present? true

map还有更高级的用法,待下下....下回分解...


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值