Golang -- 字典
来源:互联网 发布:企业邮箱设置域名 编辑:程序博客网 时间:2024/06/05 19:36
字典
定义和初始化
作为无序键值对集合,字典要求key必须是支持相等运算符 ( == , != ) 的数据类型, 如 数字, 字符串, 指针, 数组, 结构体 以及对应的接口类型.
字典是引用类型, 使用make函数或初始化表达语句来创建.
package mainimport ( "fmt")func main() { a := make(map[int]string) // 字典 (make函数) b := map[int]string{} // 字典 (初始化语句) c := map[int]struct{ // 匿名结构体作为值 name string age int }{ 1: {"wss", 22}, 2: {"fgs", 23}, } a[1] = "a" b[1] = "b" fmt.Println(a) fmt.Println(b) fmt.Println(c)}
获取值
访问不存在的键值对, 默认返回零值,不会引发错误.
所以推荐使用ok-idiom模式.
package mainimport ( "fmt")func main() { a := make(map[int]string) // 字典 (make函数) a[1] = "a" a[2] = "b" if v, ok := a[3]; ok { fmt.Println(v) }else { fmt.Println("不存在的") }}
修改value
因内存访问安全和hash算法等原因, 字典不能直接修改value成员.
正确的做法是返回整个value, 修改后再设置值. 或者value使用指针.
package mainimport ( "fmt")type user struct { name string age int}func main() { m := map[int]user { 1: {"wss", 22}, 2: {"fgs", 23}, } // m[1].age ++ // 错误: cannot assign to struct field m[1].age in map // 先获取value, 修改值后, 再设置key u := m[1] u.age ++ m[1] = u fmt.Println(m) // value使用指针 d := map[int]*user { 1: {"wss", 22}, 2: {"fgs", 23}, } d[1].age ++ fmt.Println(d)}
阅读全文
0 0
- Golang -- 字典
- 学习Golang语言(7):类型--字典
- golang 字典树 搜索+sugg 示例
- golang 学习笔记(1)数组,切片,字典
- Golang
- golang
- golang
- golang
- golang
- GOLANG
- golang
- golang
- golang
- golang
- golang
- golang
- Golang
- Golang
- Mybatis---框架原理
- Android Activity活动全屏显示的方法
- 关于宗教的一些认识
- HDU6008-Worried School
- 【洛谷P3817】 小A的糖果
- Golang -- 字典
- TCP_Server
- patch命令用法
- vim基本操作(一)
- 51nod1267 4个数和为0
- 微信公众号开发如何回复正确的超链接?
- 51Nod-1468-小Y的IP地址
- macOS下的串口调试助手——CoolTerm的使用
- Python---计算器功能实现