Go语言学习笔记(6)

Map

Go Map

Go语言中的map是一个无序的key : vlaue 键值对的数据结构容器,map内部实现是哈希表hash。

map的特点就是类似与Python的字典,,按照key来找到对应的value 。key指向数据的值。

Map的声明

Go语言的map同样是可是使用make来声明的。

var Name [KeyType]ValueType  //声明map, 此时声明的map是nil map,不存在初始值

//或者

var Name = make(map[KeyType]ValueType)

//或者

var Name = map[KeyType]ValueType{key:value,key:value}  //这种要静态初始化

Name : 变量名

KeyType :Key的数据类型

ValueType : Value的数据类型

Map的初始化

map的初始化和数组类似。

但是要直接var Name [KeyType]ValueType 来声明map会得到一个空(nil map)无法被赋值。

就需要make函数来创建一个非空的map。这样才可以赋值。

package main

import "fmt"

func main() {
	var Map map[int]int

	Map = make(map[int]int) //make函数来创建一个非空的map,赋值。

	for i := 0; i < 5; i++ {
		Map[i] = i
	}
	fmt.Println("Map: ", Map)

}

输出结果:

当然也可以利用这个来做个判断:

package main

import "fmt"

func main() {

	var Map = make(map[int]int)

	for i := 0; i < 5; i++ {
		Map[i] = i
	}

	Value, err := Map[5]
	if err == true { //如果能取到kKey为5的值,err为true,否则为false
		fmt.Println("Value: ", Value)
	} else {
		fmt.Println("不存在该键")
	}

	fmt.Println("Map: ", Map)

}

遍历Map

可以使用 for range 来遍历map

  • 遍历Key
package main

import "fmt"

func main() {

	var Map = make(map[string]int)

	Map["一"] = 1
	Map["二"] = 2
	Map["三"] = 3
	Map["四"] = 4
	Map["五"] = 5

	for key := range Map {
  // 使用for range 遍历key
		fmt.Println(key)
	}

}

输出结果:

由于内部实现是哈希值的原因,map不像切片或者数组有序,不存在下标。

  • 遍历Value

package main

import "fmt"

func main() {

	var Map = make(map[string]int)

	Map["一"] = 1
	Map["二"] = 2
	Map["三"] = 3
	Map["四"] = 4
	Map["五"] = 5

	for _, value := range Map {  //稍微修改以下即可,key直接用匿名变量
		fmt.Println(value)
	}

}

输出结果:

  • 遍历Key,Value

package main

import "fmt"

func main() {

	var Map = make(map[string]int)

	Map["一"] = 1
	Map["二"] = 2
	Map["三"] = 3
	Map["四"] = 4
	Map["五"] = 5

	for key, value := range Map {
		fmt.Println(key, ": ", value)
	}

}

输出结果:

删除元素

elete() 函数用于删除集合的元素, 参数为 map 和其对应的 key。

package main

import "fmt"

func main() {

	var Map = make(map[int]int)
	for i := 0; i < 5; i++ {
		Map[i] = i
	}

	delete(Map, 0) //删除key 为 0的元素
	delete(Map, 1)//删除key 为 1的元素
	delete(Map, 2)//删除key 为 2的元素

	for key, value := range Map {
		fmt.Println(key, ": ", value)  //遍历输出
	}

}

输出结果:

其他

不知道是不是个例,我如果把map类型改为 [int]int , 然后遍历key或者value会报错。报错原因是因为window安全中心检测到了病毒。这时候要把实时检测关掉来运行程序,或者卸载Goland重装一遍。

作者: Xenolies
文章标题 :Go语言学习笔记(6)
文章链接 : https://xenolies.xyz/2022/06/22/2415/
文章URL : https://xenolies.xyz/2022/06/22/2415/
本文采用 CC BY-NC-SA 4.0 协议
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇