go-map

目录

map按照指定顺序遍历

元素为map类型的切片

值为切片类型的map


文档地址:https://studygolang.com/pkgdoc

  1. 是一个无序的基于key-value的数据类型
  2. 最好要估算好map的容量,避免程序运行过程中在动态扩容
  3. map中取值时,可以返回两个参数,第二个参数表示是否能取到
  4. 删除元素:如果元素为空,或者不存在该key,则不进行操作
  5. 切片和map在使用前一定要初始化,要不然会报空指针

    var v1 map[string]int
	// 还没有初始化,是一个nil
	fmt.Println(v1 == nil)

	m1 := make(map[string]int, 10)
	m1["age"] = 18
	fmt.Println(m1)
    // ok是否取到值,取到为true,取不到为false
	v, ok := m1["wangli"]
	if ok {
		fmt.Println(v)
	}
//	map的遍历
	for k, v := range m1 {
		fmt.Printf("k:%v,v:%v\n", k, v)
	}
	// map遍历key
	for k := range m1 {
		fmt.Printf("k:%v\n", k)
	}
	//删除存在的key
	delete(m1, "wangli")
	delete(m1, "name")
	fmt.Println(m1)

map按照指定顺序遍历

  1. 先将key取出来
  2. 对key进行排序,然后在遍历
package main

import (
	"fmt"
	"math/rand"
	"sort"
)

func main() {
	var scoreMap = make(map[string]int, 200)
	for i := 0; i < 100; i++ {
		key := fmt.Sprintf("stu:%02d", i)
		value := rand.Intn(100)
		scoreMap[key] = value
	}
	fmt.Println(scoreMap)
	var keys = make([]string, 0, 200)
	// 取map中所有的key
	for key := range scoreMap {
		keys = append(keys, key)
	}
	// 切片排序
	sort.Strings(keys)

	for _, key := range keys {
		fmt.Println(scoreMap[key])
	}
}

元素为map类型的切片

package main

import "fmt"

//map与slice的组合
func main() {
	var s1 = make([]map[int]string, 10, 10) // 此次make初始化的是切片,内部的map并没有初始化
	s1[0] = make(map[int]string, 1)
	s1[0][100] = "test"
	fmt.Println(s1)
}

输出:[map[100:test] map[] map[] map[] map[] map[] map[] map[] map[] map[]]

值为切片类型的map

	var m1 = make(map[string][]int, 10)
	m1["beijing"] = []int{1, 2, 3}
	fmt.Println(m1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值