GoLang之map底层系列一(map初始化)

GoLang之map底层系列一(map初始化)

1.var创建不初始化值

1.var声明变量不初始化,默认 map 是 nil,nil map 不能用来存放键值对 ;
2.var声明变量不初始化,可以使用len函数

var map_variable map[key_data_type]value_data_type
func main() {
	var a map[int]bool
	fmt.Println(a) //输出:map[]
	fmt.Println(len(a))//输出:0
}
func main() {
	var a map[int]bool
	a[1] = true//在这里运行时报错
	fmt.Println(a)
}

2.var创建初始化值

1.var创建初始化值的话,可以使用len函数,也可以后续再添加值


func main() {
	var a map[int]bool = map[int]bool{
		1: true,
		2: false,
	}
	fmt.Println(len(a))//2
	//可以后续再添加值
	a[3] = false
	a[4] = true
	fmt.Println(len(a))//4
	fmt.Println(a) //输出:map[1:true 2:false 3:false 4:true]
}

3.make创建不指定大小

1.make初始化map时候如果不指定大小的话,能对map使用len()函数
2.make初始化map时候如果不指定大小的话,初始化的map不是nil

/* 使用 make 函数不指定cap */
map_variable := make(map[key_data_type]value_data_type)
func main() {
	a := make(map[int]bool)
	if a == nil {
		fmt.Println("a是nil")
	} else {
		fmt.Println("a不是nil")//输出a不是nil
	}

	fmt.Println(len(a)) //0
	fmt.Println(a)      //map[]
	a[1] = false
	fmt.Println(len(a)) //1
	fmt.Println(a)      //map[1:false]
}

4.make创建指定大小

make创建指定大小,但即使如果超出大小了,仍然可以添加键值对

在这里插入图片描述

func main() {
	a := make(map[int]bool, 2)
	if a == nil {
		fmt.Println("a是nil")
	} else {
		fmt.Println("a不是nil") //输出a不是nil
	}

	fmt.Println(len(a)) //0
	fmt.Println(a)      //map[]
	a[1] = false
	fmt.Println(len(a)) //1
	fmt.Println(a)      //map[1:false]
}
func main() {
	a := make(map[int]bool, 2)
	a[1] = false
	a[2] = false
	a[3] = true
	fmt.Println(a) //map[1:false 2:false 3:true]
	fmt.Println(len(a)) //3
}

5.var结合make创建不指定大小

func main() {
	var countryCapitalMap map[string]string 
	if countryCapitalMap == nil {
		fmt.Println("a是nil") //a是nil
	} else {
		fmt.Println("a不是nil")
	}
	fmt.Println(countryCapitalMap)      //map[]
	fmt.Println(len(countryCapitalMap)) //0

	
	countryCapitalMap = make(map[string]string)
	if countryCapitalMap == nil {
		fmt.Println("a是nil")
	} else {
		fmt.Println("a不是nil") //a不是nil
	}
	countryCapitalMap["France"] = "巴黎"
	countryCapitalMap["Italy"] = "罗马"
	countryCapitalMap["Japan"] = "东京"
	countryCapitalMap["India "] = "新德里"
	fmt.Println(countryCapitalMap)      //map[France:巴黎 India :新德里 Italy:罗马 Japan:东京]
	fmt.Println(len(countryCapitalMap)) //4
}

6.var结合make创建指定大小

func main() {
	var countryCapitalMap map[string]string
	if countryCapitalMap == nil {
		fmt.Println("a是nil") //a是nil
	} else {
		fmt.Println("a不是nil")
	}
	fmt.Println(countryCapitalMap)      //map[]
	fmt.Println(len(countryCapitalMap)) //0

	countryCapitalMap = make(map[string]string, 2)
	if countryCapitalMap == nil {
		fmt.Println("a是nil")
	} else {
		fmt.Println("a不是nil") //a不是nil
	}
	countryCapitalMap["France"] = "巴黎"

	fmt.Println(countryCapitalMap)//map[France:巴黎]    
	fmt.Println(len(countryCapitalMap))//1

	countryCapitalMap["Italy"] = "罗马"
	countryCapitalMap["Japan"] = "东京"
	countryCapitalMap["India "] = "新德里"
	fmt.Println(countryCapitalMap)      //map[France:巴黎 India :新德里 Italy:罗马 Japan:东京]
	fmt.Println(len(countryCapitalMap)) //4
}

7.创建不初始化值

func main() {
	a := map[int]bool{}
	if a == nil {
		fmt.Println("a是nil")
	} else {
		fmt.Println("a不是nil") //a不是nil
	}
	fmt.Println(a)      //map[]
	fmt.Println(len(a)) //0
	//可以后续再添加值
	a[3] = false
	a[4] = true
	fmt.Println(len(a)) //2
	fmt.Println(a)      //输出:map[3:false 4:true]
}

8.创建初始化值

func main() {
	a := map[int]bool{
		1: true,
		2: false,
	}
	fmt.Println(len(a)) //2
	//可以后续再添加值
	a[3] = false
	a[4] = true
	fmt.Println(len(a)) //4
	fmt.Println(a)      //输出:map[1:true 2:false 3:false 4:true]
}

9.var创建不初始化值再集体赋值

image-20220109180957623

10.make创建不指定大小再集体赋值

image-20220121161341671

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GoGo在努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值