• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

go之map

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一、概念

  • 简述
1、map 是一种无序的键值对的集合。(类似于python的字典dict)
2、map 的key 与 value 都是有类型的,且定义阶段时就已经统一
  • 定义方式
# 方式一
var mapName map[key_type]value_type
mapName = make(map[key_type]value_type)
// 如
//    var user map[string]string
//    user = make(map[string]string)


# 方式二 简短声明
mapName := make(map[key_type]value_type)
// 如
//    student := make(map[string]int)

# 方式三
mapName := map[key_type]value_type{}
// 如
// user := map[string]string{"jmz":"上海"}

二、声明、初始化、make

  • map 也是引用类型,需要make 创建内存
package main

import "fmt"

func main(){
	var user map[string]string

	user = make(map[string]string)
	user["jmz"] = "安工大"
	user["jly"] = "上核大"

	fmt.Println(user)


	data := make(map[string]int)
	data["info1"] = 32
	data["info2"] = 23

	fmt.Println(data)

	student := map[string]int{"jmz":23}
	fmt.Println(student)
}

三、map的增删改查

package main

import "fmt"

func main(){
	// 简短声明
	student := map[string]string{}


	// 增
	student["jmz"] = "上海"
	student["qqc"] = "北京"
	student["gka"] = "湖北"

	// 改
	student["jmz"] ="河南"

	// 查
	// 判断键是否存在
	v,ok := student["jms"] // ok == true 则jms 键存在对应的value
	if ok {
		fmt.Println(v)
	}

	// for-range
	for k,v := range student{
		fmt.Printf("key:%s,value:%s \n",k,v)
	}
	//你会发现map的输出 是无序的,因为本来map就无序,想要有序请使用 切片


	// 删
	delete(student,"jmz")  // 不存在的键删除 也不会报错
	// delete(student,"lll")  // 不会报错
	fmt.Println(student)

}

四、map 之函数

  • map 用法一
package main

import "fmt"

func main(){
	// 简短声明
	s := "中国是一个美丽的国家,China is a beautiful country"

	info := runeCount(s)
	for k,v := range info{
		fmt.Printf("%s : %d \n",string(k),v)
	}
}

// 字符串,解析每个字符的个数
func runeCount(s string)map[rune]int{
	info := map[rune]int{}


	for _,v := range []rune(s){
		info[v]++
	}
	return info
}
  • map 用法二 键值对调

package main
import (
	"fmt"
)

var (
	barVal = map[string]int{"alpha": 34, "bravo": 56, "charlie": 23,
		"delta": 87, "echo": 56, "foxtrot": 12,
		"golf": 34, "hotel": 16, "indio": 87,
		"juliet": 65, "kili": 43, "lima": 98}
)

func main() {
	invMap := make(map[int]string, len(barVal))
	for k, v := range barVal {
		invMap[v] = k
	}
	fmt.Println("inverted:")
	for k, v := range invMap {
		fmt.Printf("Key: %v, Value: %v / ", k, v)
	}
}

如果喜欢看小说,请到183小说网


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
sudo找不到命令go发布时间:2022-07-10
下一篇:
初识GO语言--基本数据类型发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap