栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

Go语言map类型基本使用方法

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Go语言map类型基本使用方法

Go语言map类型基本使用方法

此代码包含了go语言的map类型的初始化、添加、修改、删除、获取、自增、遍历、获取所有key到一个切片、按key排序、nil判等、切片类型转换为key、map作为函数参数等基本使用方法,废话不多说,直接上代码,每一个用法前都有注释,最后是运行结果截图,代码可直接拷贝运行,操作几下就掌握了。

// map 试用
// @author Jenking
package main

import (
	"fmt"
	"sort"
)

func main() {
	// map 初始化1
	map1 := make(map[string]bool)
	fmt.Printf("map1 初始化:%vn", map1)

	//map 初始化2
	map2 := map[string]int{
		"php":   1,
		"mysql": 2,
		"go":    3,
	}
	fmt.Printf("map2 初始化:%vn", map2)

	//map 修改和添加
	map3 := map[string]int{
		"zhangsan": 45,
		"lisi":     56,
		"wangwu":   18,
	}
	map3["zhangsan"] = 33 // 存在的key是修改
	map3["zhaoliu"] = 38  // 不存在的key是添加
	fmt.Printf("map3 修改和添加:%vn", map3)

	//map 删除
	map4 := map[string]int{
		"apple":  10,
		"pear":   18,
		"orange": 15,
	}
	delete(map4, "orange")
	delete(map4, "banana") // key不存在也没关系
	fmt.Printf("map4 删除:%vn", map4)

	//map 获取
	map5 := map[string]int{
		"rice":  800,
		"bread": 2,
		"milk":  1,
	}
	rice := map5["rice"] //能娶到值 800
	fmt.Printf("map5 获取: rice 能取到值: %dn", rice)
	juice := map5["juice"] //取不到,默认0值
	fmt.Printf("map5 获取: juice 取不到值,默认0值: %dn", juice)

	//map 自增
	map6 := map[string]int{
		"yanwang": 1000,
	}
	map6["yanwang"]++
	map6["xiaogui"]++ //默认0值也能自增
	fmt.Printf("map6 自增: %vn", map6)

	//map 遍历,顺序不确定
	map7 := map[string]int{
		"tiger":    1,
		"elephant": 1,
		"monkey":   20,
		"duck":     60,
	}
	fmt.Print("map7 遍历: ")
	for k, v := range map7 {
		fmt.Printf("键: %s, 值: %dt", k, v)
	}

	//map 获取所有key到一个切片
	map8 := map[string]int{
		"Monday":    1,
		"Tuesday":   2,
		"Wednesday": 3,
		"Thursday":  4,
		"Friday":    5,
		"Saturday":  6,
		"Sunday":    7,
	}
	weeks := make([]string, 0, len(map8))
	for d, _ := range map8 {
		weeks = append(weeks, d)
	}
	fmt.Printf("map8 键集合: %vn", weeks)
	// 排序键集合
	sort.Strings(weeks) //sort排序会改变参数
	fmt.Printf("map8 排序后键集合: %vn", weeks)
	// 输出排序后map
	fmt.Println("map8 排序后遍历:")
	for _, d := range weeks {
		fmt.Printf("%s: %dt", d, map8[d])
	}
	fmt.Println()

	// map的0值是nil
	var map9 map[string]int
	fmt.Printf("map9 == nil is: %tn", map9 == nil)
	// nil的map插入元素会异常,先创建再插入
	//map9["insert"] = 10
	map9 = map[string]int{}
	map9["insert"] = 10
	fmt.Printf("map9 nil创建后再插入: %vn", map9)

	// map 取值可以返回双值
	map10 := map[string]int{
		"January":  1,
		"February": 2,
	}
	fmt.Printf("map10 : %vn", map10)
	January, ok1 := map10["January"]
	fmt.Printf("map10 取双值,January:%v, ok: %vn", January, ok1)
	March, ok2 := map10["March"]
	fmt.Printf("map10 取双值,March:%v, ok: %vn", March, ok2)

	// map 切片类型转换为 K
	var map11 = make(map[string]int)
	var list = []string{"hello"}
	map11[k(list)] = 3
	fmt.Printf("map11 切片类型转换为K: %vn", map11)

	// map 函数传参
	var map12 = map[string]int{
		"zhang": 15,
	}
	fmt.Printf("map12 原始值:%vn", map12)
	assign(map12)
	fmt.Printf("map12 函数assign之后值:%vn", map12)
	modify(map12)
	fmt.Printf("map12 函数modify之后值:%vn", map12)
}

// 将切片转换为可判等类型
func k(list []string) string {
	return fmt.Sprintf("%q", list)
}

// 通过赋值改变 map, 不起作用
func assign(m map[string]int) {
	m = map[string]int{
		"li": 16,
	}
}

// 通过修改元素改变 map
func modify(m map[string]int) {
	m["li"] = 16
}

运行结果:
map1 初始化:map[]
map2 初始化:map[go:3 mysql:2 php:1]
map3 修改和添加:map[lisi:56 wangwu:18 zhangsan:33 zhaoliu:38]
map4 删除:map[apple:10 pear:18]
map5 获取: rice 能取到值: 800
map5 获取: juice 取不到值,默认0值: 0
map6 自增: map[xiaogui:1 yanwang:1001]
map7 遍历: 键: elephant, 值: 1 键: monkey, 值: 20 键: duck, 值: 60 键: tiger, 值: 1 m
ap8 键集合: [Sunday Monday Tuesday Wednesday Thursday Friday Saturday]
map8 排序后键集合: [Friday Monday Saturday Sunday Thursday Tuesday Wednesday]
map8 排序后遍历:
Friday: 5 Monday: 1 Saturday: 6 Sunday: 7 Thursday: 4 Tuesday: 2 W
ednesday: 3
map9 == nil is: true
map9 nil创建后再插入: map[insert:10]
map10 : map[February:2 January:1]
map10 取双值,January:1, ok: true
map10 取双值,March:0, ok: false
map11 切片类型转换为K: map[[“hello”]:3]
map12 原始值:map[zhang:15]
map12 函数assign之后值:map[zhang:15]
map12 函数modify之后值:map[li:16 zhang:15]

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/991578.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号