go example 10: Map

本文详细介绍了Golang中的map数据结构,包括创建、赋值、访问、删除以及maps包提供的函数,如判断两个map是否相等。

golang的map类似其他语言的哈希或字典。

package main

import (
	"fmt"
	"golang.org/x/exp/maps"
)

func main() {
	// 创建空map用内置的make函数
	m := make(map[string]int)

	// 给map赋值语法 key/value用:name[key] = val
	m["k1"] = 7
	m["k2"] = 13
	fmt.Println("map:", m)
	// print
	// map: map[k1:7 k2:13]

	// 获取值用name[key]
	v1 := m["k1"]
	fmt.Println("v1:", v1)
	// print
	// v1: 7

	// 如果key不存在,返回类型的零值(默认值)
	v3 := m["k3"]
	fmt.Println("v3:", v3)
	// print
	// v3: 0

	// len返回map的长度
	fmt.Println("len:", len(m))
	// print
	// len: 2

	// 用delete把键值对从map中删除
	delete(m, "k2")
	fmt.Println("map:", m)
	// print
	// map: map[k1:7]

	// 删除所有键值对
	maps.Clear(m) // old version 1.19. 如果你是新版本1.21 可以直接使用 clear函数
	fmt.Println("map:", m)
	// print
	// map: map[]

	// 第二个返回参数是可选的,表示这个key是否存在于map中。这个返回值可以避免歧义,不存在的key返回的默认值,还是key存在但是值类型零值的情况。
	_, prs := m["k2"]
	fmt.Println("prs:", prs)
	// print
	// prs: false

	// 一行,声明加初始化
	n := map[string]int{"foo": 1, "bar": 2}
	fmt.Println("map:", n)
	// print
	// map: map[bar:2 foo:1]

	// maps包的函数判断两个map是否相等
	n2 := map[string]int{"foo": 1, "bar": 2}
	if maps.Equal(n, n2) {
		fmt.Println("n == n2")
	}
	// print
	// n == n2
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值