Go之Map

package main
import (
	"fmt"
	"sync"
)
var(
	// 使用内建函数make来定义Map,会返回初始化后的map
	Map1 = make(map[string]string)
	// 申明一个同步锁
	rwm sync.RWMutex
)

func main() {
	// map关键字来定义Map,需要带{},否则被认为不初始化Map,就会创建一个nil map。nil map 不能用来存放键值对
	Map := map[string]string{}
	// Map里面添加元素,Map是无序的集合,如果key也存在则覆盖old value
	Map["France"] = "Paris"
	Map["Italy"] = "Rome"
	Map["Japan"] = "Tokyo"
	// map是线程不安全的集合,因此向带有锁的map添加元素
	set("India","New Delhi")
	// 使用key来遍历Map,获取value
	for country := range Map {
		fmt.Println("Capital of", country, "is", Map[country])
	}
	// 判断map某个元素是否存在,返回两个值,value值和bool值
	// 当key如果不存在的时候,我们会得到该value值类型的默认值,比如string类型得到空字符串,int类型得到0。但是程序不会报错。
	captial, ok := Map["United States"]
	if ok {
		fmt.Println("Capital of United States is", captial)
	} else {
		fmt.Println("Capital of United States is", captial)
		fmt.Println("Capital of United States is not present")
	}
	// len()内置函数获取map长度
	fmt.Println("Map 的长度:", len(Map))
	// delete(map, key) 函数用于删除集合的元素, 参数为 map 和其对应的 key。删除函数不返回任何值
	delete(Map, "Japan")
	fmt.Println("Map 的长度:", len(Map))
	// 获取map中所有的keys切片
	allkeys := getAllkeys(Map)
	fmt.Println(allkeys)
}
func set(key string, value string){
	rwm.Lock()
	defer rwm.Unlock()
	Map1[key] = value
}
func getAllkeys(source map[string]string) []string {
	var keys []string
	for key := range source {
		keys = append(keys, key)
	}
	return keys
}

运行结果:

Capital of France is Paris
Capital of Italy is Rome
Capital of Japan is Tokyo
Capital of India is New Delhi
Capital of United States is 
Capital of United States is not present
Map 的长度: 4
Map 的长度: 3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值