欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Golang 地图简介 - Go 地图

最编程 2024-10-17 20:18:35
...

Map 简介

在Go语言中提供了map数据结构来存储键值对数据。map的数据类型为map[K]V,其中K为键的类型,V为值的类型。map的键类型必须支持==操作符,用来比较两个键是否相等。Go语言提供了4种内置的map操作: lendeletecomparisonassign

Map 定义


map_var := make(map[K]V) // 用make函数创建一个空的map,其中K和V分别为键和值的类型

map_var[key] = value // 向map中添加一个键值对

value := map_var[key] // 获取指定键的值

delete(map_var, key) // 从map中删除指定的键及其对应的值

Map Iteration

Go语言提供了两个方法来遍历map中的所有键值对,分别是range方法和Len()方法。


// 使用range循环遍历map中的所有键值对

for key, value := range map_var {

// TODO ...

}



// 计算map中的元素数量

if len(map_var) > 0 {

// TODO ...

}

Map 的线程安全

在Go语言中,map是非线程安全的,在多线程并发访问时可能导致程序报错。当map被多个协程同时访问时,我们需要使用sync包中的sync.Mutex来确保操作的原子性和并发安全。


import "sync"



type SafeMap struct {

mu sync.Mutex

m map[string]int

}



func (sm *SafeMap) Get(key string) int {

sm.mu.Lock()

defer sm.mu.Unlock()

return sm.m[key]

}



func (sm *SafeMap) Set(key string, value int) {

sm.mu.Lock()

defer sm.mu.Unlock()

sm.m[key] = value

}



func (sm *SafeMap) Delete(key string) {

sm.mu.Lock()

defer sm.mu.Unlock()

delete(sm.m, key)

}