首页 / GO / Golang基础_05-map
Golang基础_05-map
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Golang基础_05-map,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2251字,纯文字阅读大概需要4分钟。
内容图文
![Golang基础_05-map](/upload/InfoBanner/zyjiaocheng/1075/04ef092e82724b4bafc394dfb15d1470.jpg)
目录
@
简介
- 类似其他语言的哈希表或者字典,以key-value的形式存储数据
- key必须支持==或者!=比较运算的类型,不能是函数,map或者slice(他们都不支持),但是value可以呀,嘿嘿
-
map查找比线性搜索快很多,但比使用索引访问数据的类型慢100倍(array,slice)
声明定义初始化
- map支持使用make()创建,也可以用传统方式创建支持:=这种简写形式
- make([keyType]valueType, cap),cap是容量,可省略
- 超过容量会自动扩容,但是尽量使用合适的初始值
- 使用len() 获取元素个数
-
键值对不存在就自动添加,使用delete(map,key)删除某个键值对
func main(){
var m map[int]string = map[int]string{}
var mm map[int]string = make(map[int]string)
mmm := make(map[int]string)
m[1] = "ok"
a := m[1]
fmt.Println(m,a,mm,mmm)
delete(m,1)
fmt.Println(m,a)
}
/*
> Output:
command-line-arguments
map[1:ok] ok map[] map[]
map[] ok
*/
复杂map
func main(){
var m map[int]map[int]string
m = make(map[int]map[int]string)
//这里记得里面的value对应的map也要初始化
a, ok := m[2][1]
if !ok {
m[2] = make(map[int]string)
}
m[2][1]="GOOD"
a,ok = m[2][1]
fmt.Println(a, ok)
}
/*
> Output:
command-line-arguments
GOOD true
*/
map和slice的迭代操作
/*
for i,v:=range slice/map{
}*/
//如果是slice : i是索引,int型,v是其对应的值的拷贝,对v的任何操作都不会影响slice
//如果是map : i,v对应键值对,对v的任何操作都不会影响map
func main(){
sm := make([]map[int]string, 5)
for _, v := range sm {
v = make(map[int]string, 1)
v[1]="ok"
fmt.Println(v)
}
fmt.Println(sm)
for i := range sm {
sm[i] = make(map[int]string, 1)
sm[i][1] = "not ok"
fmt.Println(sm[i])
}
fmt.Println(sm)
}
/*
> Output:
command-line-arguments
map[1:ok]
map[1:ok]
map[1:ok]
map[1:ok]
map[1:ok]
[map[] map[] map[] map[] map[]]
map[1:not ok]
map[1:not ok]
map[1:not ok]
map[1:not ok]
map[1:not ok]
[map[1:not ok] map[1:not ok] map[1:not ok] map[1:not ok] map[1:not ok]]
*/
利用slice对map进行间接排序
- map是无序的
- 引入包sort,使用sort.Ints()函数
func main(){
m := map[int]string{1:"a",2:"b",3:"c",4:"d",5:"f",6:"g"}
s := make([]int, len(m))
i := 0
for k,_ := range m {
s[i] = k
i++
}
sort.Ints(s)
for _,v := range s {
fmt.Println(m[v])
}
fmt.Println(s)
}
/*
> Output:
command-line-arguments
a
b
c
d
f
g
[1 2 3 4 5 6]
*/
例子:交换key和value
func main(){
m := map[int]string{1:"a",2:"b",3:"c",4:"d",5:"f",6:"g"}
mm := make(map[string]int,len(m))
for k,v := range m {
mm[v]=k
}
fmt.Println(m)
fmt.Println(mm)
}
/*
> Output:
command-line-arguments
map[5:f 6:g 1:a 2:b 3:c 4:d]
map[f:5 g:6 a:1 b:2 c:3 d:4]
*/
原文:https://www.cnblogs.com/leafs99/p/golang_basic_05.html
内容总结
以上是互联网集市为您收集整理的Golang基础_05-map全部内容,希望文章能够帮你解决Golang基础_05-map所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。