Go语言学习笔记 - PART6 - Map

特点

  • 一种key-value的无序集合
  • 数组和切片不能作为key
  • 含有数组切片的结构体不能作为key,只包含内建类型的结构体可以作为key
  • 指针和接口类型可以作为key
  • 允许函数作为值,key用来选择要执行的函数(看下面代码,注释1处)
  • 切片可以作为值(看下面代码,注释2处)
  • 可以动态伸缩,不存在固定长度或最大限制,make的时候可以指定map的初始容量capacity
  • 引用类型,不是值类型
func main() {
    // 1. int作为key,func() int作为value
	mf := map[int]func() int{
		1: func() int { return 10 },
		2: func() int { return 20 },
		5: func() int { return 50 },
	}
	fmt.Println(mf)
}
// 2. int作为key,[]int切片作为value
mp1 := make(map[int][]int)
mp2 := make(map[int]*[]int)
复制代码

声明与初始化

// 声明方式
var map1 map[int]string

// 初始化方式
var map1 = make(map[keytype]valuetype)
map2 = map[string]int{"one": 1, "two": 2}
复制代码

不要使用new来构建map,否则会获得一个空引用得指针,相当于声明了一个未初始化得变量,并获取了它的地址

for - range用法

for key, value := range map1 {
	...
}
复制代码

入门教程推荐: github.com/Unknwon/the…

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值