Introdução à linguagem Go 17 - o uso do mapa | mês do tema Go

Construção do mapa

O valor inicial do tipo de referência é nil, uma fatia vazia pode ser usada, mas um mapa vazio não pode ser usado

estrutura gramatical:

1. Crie um mapa

    var map1 map[key类型]value类型
    nil map,无法直接使用
    
    var map2=make(map[key类型])value类型
    
    var map3=map[key类型]value类型{key:value,key:value....}
    
    
复制代码
package main

import "fmt"

func main() {
	/*
	map:映射,是一种专门用于存储键值对的集合,属于引用类型

	存储特点:
		A.存储的是无序的键值对
		B.键不能重复,并且和value值一一对应的
			map中key不能重复。如果重复,新的value会覆盖原来的。
	语法结构:
		1.创建map
	 */
	//创建map
	var map1 map[int]string
	var map2=make(map[int]string)
	var map3=map[string]int{"Go":98,"Python":87,"java":79,"Html":93}
	fmt.Println(map1)
	fmt.Println(map2)
	fmt.Println(map3)

	fmt.Println(map1==nil)
	fmt.Println(map2==nil)
	fmt.Println(map3 ==nil)

	if map1==nil {
		map1=make(map[int]string)
		fmt.Println(map1==nil)
	}
}

复制代码

imagem.png

uso do mapa

package main

import "fmt"

func main() {
	/*
	map:映射,是一种专门用于存储键值对的集合,属于引用类型

	存储特点:
		A.存储的是无序的键值对
		B.键不能重复,并且和value值一一对应的
			map中key不能重复。如果重复,新的value会覆盖原来的。
	语法结构:
	    1. 创建map
	        var map1 map[key类型]value类型
	        nil map,无法直接使用

	        var map2=make(map[key类型])value类型

	        var map3=map[key类型]value类型{key:value,key:value....}
	 */
	//1.创建map
	var map1 map[int]string
	var map2=make(map[int]string)
	var map3=map[string]int{"Go":98,"Python":87,"java":79,"Html":93}
	fmt.Println(map1)
	fmt.Println(map2)
	fmt.Println(map3)

	fmt.Println(map1==nil)
	fmt.Println(map2==nil)
	fmt.Println(map3 ==nil)

	//2.nil map不能直接使用
	if map1==nil {
		map1=make(map[int]string)
		fmt.Println(map1==nil)
	}

	//3.存储键值到map中
	map1[1]="hello"
	map1[2]="world"
	map1[3]="mm"
	map1[4]="fasd"
	map1[5]="ffff"

	//4.获取数据
	//根据key获取对应value,如果key不存在,获取value类型的默认值
	fmt.Println(map1)
	fmt.Println(map1[4])
	fmt.Println(map1[40])

	//返回两个值,v1为数据,OK判断key值是否存在
	v1,ok:=map1[40]
	if ok {
		fmt.Println("对应数值为:",v1)
	}else {
		fmt.Println("key不存在")
	}

	//5.修改数据
	fmt.Println(map1)
	map1[3]="如花"
	fmt.Println(map1)

	//6.删除数据
	delete(map1,3)
	fmt.Println(map1)
	delete(map1,30)
	fmt.Println(map1)

	//7.map长度
	fmt.Println(len(map1))
}

复制代码

imagem.png

Guess you like

Origin juejin.im/post/6950507528074002440