Go语言学习笔记:3 map

一.语法基础

        Go语言中 map的定义语法如下:

map[KeyType]ValueType

        1.KeyType:表示键的类型

        2.ValueType:表示键对应的值的类型。

map类型的变量默认初始值为nil,需要使用make()函数来分配内存:

make(map[KeyType]ValueType, [cap])

二.基本的使用

        声明后添加元素:

func main() {
	scoreMap := make(map[string]int, 8)
	scoreMap["A"] = 50
	scoreMap["B"] = 100
	var a = scoreMap["A"] //可以给变量赋值
	fmt.Println(a)
	fmt.Println(scoreMap)
	fmt.Println(scoreMap["A"])
	fmt.Printf("type of a:%T\n", scoreMap)
}
/*结果:
    50
    map[A:50 B:100]
    50
    type of a:map[string]int
*/

        声明时添加元素(这里写到外部):

var deploy = map[string]int{
	"A": 10,
	"B": 20,
}

func main() {
	a := deploy["B"]
	fmt.Println(a)
	fmt.Println(deploy) 
}

三.判断某个键是否存在(查)

        基本格式:

 value, ok := map[key]

         例子:

var deploy = map[string]int{
	"A": 10,
	"B": 20,
    "C": 30,
}

func main() {
	v, ok := deploy["A"]//判断A是否存在
	if ok {
		fmt.Println(v)
	} else {
		fmt.Println("没有这个键") //10
	}
	a := deploy["B"]
	fmt.Println(a)      //20
	fmt.Println(deploy) //map[A:10 B:20]
}

四.遍历map

var deploy = map[string]int{
	"A": 10,
	"B": 20,
	"C": 20,
}

func main() {
	deploy["D"] = 40
	for s, i := range deploy {
		fmt.Println(s, i)
	}
}

        当只想遍历键或者值的时候

                只遍历键:

    for s:= range deploy {
		fmt.Println(s)
	}

                只遍历值:

for _, i := range deploy {
		fmt.Println(i)
	}

五.删除键值对

        基本语法

    delete(map, key)
    map:表示要删除键值对的map

    key:表示要删除的键值对的键

        示例

func main(){
    scoreMap := make(map[string]int)
    scoreMap["张三"] = 90
    scoreMap["小明"] = 100
    scoreMap["王五"] = 60
    delete(scoreMap, "小明")//将小明:100从map中删除
    for k,v := range scoreMap{
        fmt.Println(k, v)
    }
}

 六.总结

//直接创建初始化一个map
var mapInit = map[string]string {"xiaoli":"湖南", "xiaoliu":"天津"}
//声明一个map类型变量,
//map的key的类型是string,value的类型是string
var mapTemp map[string]string
//使用make函数初始化这个变量,并指定大小(也可以不指定)
mapTemp = make(map[string]string,10)
//存储key ,value
mapTemp["xiaoming"] = "北京"
mapTemp["xiaowang"]= "河北"
//根据key获取value,
//如果key存在,则ok是true,否则是flase
//v1用来接收key对应的value,当ok是false时,v1是nil
v1,ok := mapTemp["xiaoming"]
fmt.Println(ok,v1)
//当key=xiaowang存在时打印value
if v2,ok := mapTemp["xiaowang"]; ok{
    fmt.Println(v2)
}
//遍历map,打印key和value
for k,v := range mapTemp{
    fmt.Println(k,v)
}
//删除map中的key
delete(mapTemp,"xiaoming")
//获取map的大小
l := len(mapTemp)
fmt.Println(l)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值