目录
  • 概述
  • 语法
    • 声明和初始化
    • 读取
    • 删除
    • 遍历
  • 总结
    • 示例

      Go语言基础map用法及示例详解

      概述

      • map是基于key-value键值对的无序的集合
      • Go语言中的map是引用类型
      • 必须初始化才能使用。

      语法

      声明和初始化

      配合make使用,否则是nil

      var map[KeyType]ValueType
      //KeyType:表示键的类型
      //ValueType:表示键对应的值的类型
      make(map[KeyType]ValueType, [cap])
      //cap表示map的容量,该参数虽然不是必须的,但是我们应该在初始化map的时候就为其指定一个合适的容量
      //当你的容量超过时会自动扩充
      

      例子:

      //1.声明
      var name1 map[int]string   //key是int,value是string
      var name2 map[string]string  //key是string,value是string
      //字面量
      names3:=map[int]string{0:"张三",1:"李四"}
      //2.分配内存
      name1 = make(map[int]string, 2)         //2:map的容量,当你的容量超过时会自动扩充
      name2 = make(map[string]string, 2)
      //3.赋值
      //3.1 通过KeyType赋值
      name1[0]="张三"   //key:0   value:张三
      name1[1]="李四"   //key:1   value:李四
      name1[2]="王五"   //key:2   value:王五    //已经超过了分配的的容量,会自动扩充
      name2["A"]="张三"
      name2["B"]="李四"
      

      读取

      根据KeyType来读取

      如果keyType存在,就返回那个值,如果不存在,返回类型默认值值

      fmt.Println(name1[0])
      fmt.Println(name2["B"])
      

      测试map中key值是否存在

      通过KeyType来取值时,会返回两个值,一个是vlue,另一个是是否存在的bool

      if value, ok := name1[5]; ok {
      	fmt.Println("存在这个值",value)
      } else {
      	fmt.Println("不存在这个值", value)
      }
      

      删除

      delete(map[int]string,[KeyType])
      

      例子

      delete(name1 , 1)
      

      遍历

      range
      

      例子:

      for key,value:=range name1 {
      	fmt.Printf("key=%d,value=%s\n",key,value)
      }
      for key,value:=range name2 {
      	fmt.Printf("key=%s,value=%s\n",key,value)
      }
      

      总结

      1. map必须借助make分配内存空间,否则是nil
      2. 字面量初始化必修保证key是唯一的,否则error
      3. map传递的是引用,就是说形参会改变实参的值
      4. 直接对map对象使用[]操作符获得的对象不能直接修改状态
      5. map中存储指针而不是结构体

      示例

      package main
      import "fmt"
      func main() {
      	//一、声明和初始化【配合make使用,否则是nil】
      	//1.声明
      	var name1 map[int]string    //key是int,value是string
      	var name2 map[string]string //key是string,value是string
      	//2.分配内存
      	name1 = make(map[int]string, 2) //2:map的容量,当你的容量超过时会自动扩充
      	name2 = make(map[string]string, 2)
      	//3.赋值
      	//3.1 通过KeyType赋值
      	name1[0] = "张三" //key:0   value:张三
      	name1[1] = "李四" //key:1   value:李四
      	name1[2] = "王五" //key:2   value:王五    //已经超过了分配的的容量,会自动扩充
      	name2["A"] = "张三"
      	name2["B"] = "李四"
      	//二、读取
      	//	1. 根据KeyType来读取,如果keyType存在,就返回那个值,如果不存在,返回类型默认值值
      	fmt.Println(name1[0])
      	fmt.Println(name2["B"])
      	//	2. 测试map中key值是否存在【通过KeyType来取值时,会返回两个值,一个是vlue,另一个是是否存在的bool】
      	if value, ok := name1[2]; ok {
      		fmt.Println("存在这个值", value)
      	} else {
      		fmt.Println("不存在这个值", value)
      	}
      	//三、删除
      	delete(name1, 1)  //删除了李四
      	delete(name2, "C")   //没有这个C
      	fmt.Println(name1)
      	fmt.Println(name2)
      	//四、遍历
      	for key,value:=range name1 {
      		fmt.Printf("key=%d,value=%s\n",key,value)
      	}
      	for key,value:=range name2 {
      		fmt.Printf("key=%s,value=%s\n",key,value)
      	}
      }
      
      

      以上就是Go语言基础map用法及示例详解的详细内容,更多关于Go语言基础的资料请关注其它相关文章!

      声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。