zoukankan      html  css  js  c++  java
  • 30_map的使用

    1.散列表是设计精妙,用途广泛的数据结构之一,他是一个拥有键值对元素的无序集合.在这个集合中,键的值是唯一的,
      键对应的值,可以通过键来获取,更新,或移除.

    2.Go语言中的map(映射、字典)是一种内置的数据结构,它是一个无序的key—value对的集合,比如以身份证号作为
      唯一键来标识一个人的信息

    3.map的格式:map[key Type]vaule Type

    代码如下:

    package main
    
    
    import "fmt"
    
    
    func main() {
    
    
    	//1.map的创建
    	var m1 map[int]string  //只是声明了一个map,并没有初始化,此时为空(nil)的map
    	fmt.Println(m1 == nil) //true
    	fmt.Println(len(m1))   //0
    	//不能向没有初始化的map赋值
    	//m1["steven"]=21//err
    
    
    	//m2,m3的创建方式等价
    	m2 := map[int]string{}
    	m3 := make(map[int]string)
    	fmt.Println(m2, m3) //map[],map[]
    
    
    	m4 := make(map[int]string, 4) //指定map的容量,但是map没有cap函数
    	fmt.Println(len(m4))          //0
    
    
    	//2.map的初始化
    
    
    	//定义并初始化
    	var a1 map[int]string = map[int]string{}
    	fmt.Println(a1) //map[]
    	//初始化之后就可以赋值了
    	a1[1] = "steven"
    	fmt.Println(a1)
    	var a2 map[int]string = map[int]string{1: "steven", 2: "Alice"}
    	//map的存储是无序的所以打印也是无序的
    	fmt.Println(a2)
    
    
    	//自动推导类型
    	b1 := map[int]string{1: "steven", 2: "Alice"}
    	b2 := make(map[int]string)
    	b2[1] = "steven"
    	b2[2] = "alice"
    	fmt.Println(b1, b2)
    	b3 := make(map[int]string, 4) //分配一个容量为4的map
    	//map 容量不够时,go底层会自动为map分配空间
    	b3[1] = "steven"
    	b3[2] = "yoyo"
    	b3[3] = "san"
    	b3[4] = "alice"
    	b3[5] = "zhao"
    	fmt.Println(len(b3)) //5,自动扩容,和append相似
    
    
    	//遍历
    	for key, val := range b3 {
    		fmt.Printf("b3[%d]=%s
    ", key, val)
    
    
    	}
    
    
    	//迭代遍历2 第一个返回值是key,第二个返回值可以省略
    	for key := range b3 {
    		fmt.Printf("b3[%d]=%s
    ", key, b3[key])
    
    
    	}
    
    
    	//判断某个map key是否存在,如果存在,第一个返回值是value,第二个是bool类型,存在是true
    	value, ok := b2[3]
    	fmt.Printf("b2[3]=%s,bool=%v
    ", value, ok) //b2[3]=,bool=false
    	value, ok = b2[2]
    	fmt.Printf("b2[2]=%s,bool=%v
    ", value, ok) //b2[2]=alice,bool=true
    
    
    	//删除指定key值的map
    	delete(b2, 2)
    	fmt.Println(b2)
    
    
    	//map做函数的参数传递(引用传递)
    	test(b3, 2)
    	fmt.Println(b3) //map[4:alice 5:zhao 1:steven 3:san]
    }
    
    
    //map做函数参数,引用传递,删除map指定key
    func test(m map[int]string, a int) {
    	for key, _ := range m {
    		if key == a {
    			delete(m, a)
    		}
    	}
    }
    每天的价值就是不停息的前进!!!
  • 相关阅读:
    MongoDB笔记: 安装和常见问题
    Spring Boot方式的Dubbo项目
    Centos7安装Redis5.0.5并加入Systemd服务
    生成Nginx服务器SSL证书和客户端证书
    OpenSSL的证书, 私钥和签名请求(CSRs)
    迁移Git项目到Gitlab
    Ubuntu18.04 Server安装Nginx+Git服务和独立的svn服务
    ESXi6.5上的Ubuntu虚机在远程SSH时宕机
    Nginx访问路径添加密码保护
    从阿里云DATAV GeoAtlas接口抽取行政区划数据
  • 原文地址:https://www.cnblogs.com/zhaopp/p/11487020.html
Copyright © 2011-2022 走看看