首页 > 其他分享 > 【入门】Go语言Map集合详解

【入门】Go语言Map集合详解

时间:2023-03-30 17:37:31浏览次数:29  
标签:Map string map fmt 详解 Go main siteMap

目录

一、Map集合介绍

1.1 什么是Map集合?

  • map集合是一种无序的键值对的集合
  • map是通过key来快速检索数据,key类似于索引,指向数据的值
  • 在获取 Map 的值时,如果键不存在,返回该类型的零值,例如 int 类型的零值是 0,string 类型的零值是 ""
  • Map 是引用类型,如果将一个 Map 传递给一个函数或赋值给另一个变量,它们都指向同一个底层数据结构,因此对 Map 的修改会影响到所有引用它的变量

Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。

1.2 Map集合语法

mapVariable := make(map[KeyType]ValueType, initialCapacity)
  • KeyType 是键的类型
  • ValueType 是值的类型
  • initialCapacity 是可选的参数,用于指定 Map 的初始容量

二、Map基本操作

2.1 定义Map

package main

import "fmt"

func main() {
  // 定义一个空Map
	siteMap := make(map[string]string)
	fmt.Println(siteMap)
}

或者可以使用下面方法定义并初始化:

package main

import "fmt"

func main() {

	siteMap := map[string]int{
		"zhangsan": 1,
		"lisi":     2,
		"wangwu":   3,
	}
	fmt.Println(siteMap)
}

2.2 获取Map

package main

import "fmt"

func main() {

	siteMap := map[string]int{
		"zhangsan": 1666,
		"lisi":     2666,
		"wangwu":   3,
	}

	v1 := siteMap["zhangsan"] //将zhangsan键的值付给v1变量
	v2, ok := siteMap["lisi"] //将lisi键值付给v1,ok两个变量
	fmt.Println(v1)
	fmt.Println(v2, ok)
}

代码输出内容:

1666
2666 true

2.3 修改Map元素

package main

import "fmt"

func main() {

	siteMap := map[string]int{
		"zhangsan": 1666,
		"lisi":     2666,
		"wangwu":   3,
	}
	siteMap["lisi"] = 666666 // 修改元素
	fmt.Println(siteMap["lisi"])
}

代码输出内容:

666666

2.4 删除Map元素

package main

import "fmt"

func main() {

	siteMap := map[string]int{
		"zhangsan": 1666,
		"lisi":     2666,
		"wangwu":   3,
	}
	delete(siteMap, "zhangsan") // 删除元素

	fmt.Println(siteMap)
}

代码输出内容:

map[lisi:2666 wangwu:3]

2.5 遍历Map

package main

import "fmt"

func main() {

	siteMap := map[string]int{
		"zhangsan": 1666,
		"lisi":     2666,
		"wangwu":   3,
	}
	for i, v := range siteMap {
		fmt.Printf("键:%v\t\t值:%v\n", i, v)
	}
}

代码输出内容:

键:zhangsan			值:1666
键:lisi			值:2666
键:wangwu			值:3

三、案例

3.1 案例一

package main

import (
	"fmt"
)

func main() {
	cities := make(map[string]string)
	// 新增key
	cities["no1"] = "北京"
	cities["no2"] = "上海"
	cities["no3"] = "深圳"

	// 修改key,因为这个存在,索引是修改
	cities["no3"] = "邯郸"

	// 删除key
	delete(cities, "no2")
	fmt.Println(cities)

	// 删除所有key 直接make一个新地址
	cities = make(map[string]string)
	fmt.Println(cities)
}

代码输出内容:

map[no1:北京 no3:邯郸]
map[]

3.2 案例二

package main

import "fmt"

func main() {
	siteMap := make(map[string]string)

	siteMap["A"] = "石家庄"
	siteMap["B"] = "唐山"
	siteMap["C"] = "秦皇岛"
	siteMap["D"] = "邯郸"

	for site := range siteMap {
		fmt.Printf("车牌 %v 城市是: %v\n", site, siteMap[site])
	}

	name, ok := siteMap["D"]
	if ok {
		fmt.Println("D对应城市是:", name)
	} else {
		fmt.Println("D 没有定义!")
	}
}

代码输出内容:

车牌 C 城市是: 秦皇岛
车牌 D 城市是: 邯郸
车牌 A 城市是: 石家庄
车牌 B 城市是: 唐山
D对应城市是: 邯郸

标签:Map,string,map,fmt,详解,Go,main,siteMap
From: https://www.cnblogs.com/qinziteng/p/17273254.html

相关文章

  • Java并发编程——Thread详解
    前言操作系统中,一个进程往往代表着一个应用程序实例,而线程是进程中轻量级的调度单元,也可以看作是轻量级的进程,可以共享进程资源。下面简单介绍在操作系统中线程通用实现方式。接下来内容主要对线程模型进行简单介绍,然后对Java线程实现Thread类进行了解。一、线程模型暂且抛开Jav......
  • django admin 自动选择登录用户
    Django为我们提供了一个很好的管理界面。但是当我们只使用默认值时,用户需要自己选择他们是谁。我们想为他们自动选择,他们不能假装是其他人。classNotesAdmin(admin.Mode......
  • Django admin中TabularInline和StackedInline使用
    TabularInline类用于在A页面上编辑B表的字段,举例说明,如果models.py中有Staff、Job两个model:fromdjango.dbimportmodelsclassStaff(models.Model):name=model......
  • windows安装mongodb,配置服务名,简化启动及遇到的问题
    1、官网下载官网地址:https://www.mongodb.com进到官网之后,Products->CommunitiServer(或者直接访问 https://www.mongodb.com/try/download/community )   ......
  • git部署django上线
    网站部署上线需要环境:centos需要的依赖组件:python3.9先下载wgethttps://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz解压编译安装tar-xvfPython-3.9.5......
  • 让游戏在Google Play排最前的10个免费策略
    作为独立开发商,要想应用或游戏在GooglePlay靠前,恐怕是一件非常艰难的事情,也许成千上万的美元换不来一丝变化,不过,如果你知道这10个排名靠前的秘密,就有可能不会一分一文,让你......
  • QR码制作公司Paperlinks推订餐应用PayDragon
    Paperlinks不但能利用QR码让你与菜单互动起来,还能为你提供简单的手机订餐服务,公司最近发布了iPhone及Android订餐应用PayDragon,两步方可完成手机订餐。在如果你正忙着写博......
  • Google为何从骨子里害怕Facebook
    Google联合创始人Brin最近炮轰苹果和Facebook,称互联网的“开放性”正在受到威胁。说到底,Brin此举除了为了自身利益外,更是反映出了Google对这两家公司的深深恐惧。苹果有望......
  • 用go实现get/post请求调用api
    注册登录首页专栏后端文章详情用go实现get/post请求调用apiHeroine1 发布于2022-09-01 上海  最近的一次demo,相当于一次复习吧,把......
  • IDEA插件google-java-format代码格式化保存时自动格式化
    安装google-java-format启用google-java-format安装saveactions启用saveactions,保存时自动格式化,将没用的import语句删除自动优化导包如果用的是2022......