目录1-1 定义1-2 map遍历1-3 map集合删除1-4 map是引用类型Go 语言提供了内置类型 map集合,它将一个值与一个键关联起来,可以使用相应的键检索值。 map是一
Go 语言提供了内置类型 map集合,它将一个值与一个键关联起来,可以使用相应的键检索值。
内置的len()函数同样适用于map,返回map拥有的键值对的数量。但是map不能通过cap()函数计算容量(或者说cap()函数的参数不可以是map)。
同一个map中key必须保证唯一。key的数据类型必须是可参与比较运算的类型,也就是支持==或!=操作的类型,如布尔型、整型、浮点型、字符串、数组。切片、函数等引用类型则不能作为key的数据类型。
map的value可以是任何数据类型。map和切片一样,也是一种引用类型。
map声明
map的初始化赋值和遍历
package main
import "fmt"
func main() {
//1、声明时同时初始化
var country = map[string]string{
"China": "Beijing",
"Japan": "Tokyo",
"India": "New Delhi",
"France": "Paris",
"Italy": "Rome",
}
fmt.Println(country)
// 短变量声明初始化方式
rating := map[string]float64{"c": 5, "Go": 4.5, "python": 4.5, "c++": 3}
fmt.Println(rating)
//2、创建map后再赋值
countryMap := make(map[string]string)
countryMap["China"] = "Beijing"
countryMap["Japan"] = "Tokyo"
countryMap["India"] = "New Delhi"
countryMap["France"] = "Paris"
countryMap["Italy"] = "Rome"
//3、遍历map(无序)
//(1)、key 、value都遍历
for k, v := range countryMap {
fmt.Println("国家", k, "首都", v)
}
fmt.Println("-----------")
//(2)、只展示value
for _, v := range countryMap {
fmt.Println("国家", "首都", v)
}
fmt.Println("-----------")
//(3)、只展示key
for k := range countryMap {
fmt.Println("国家", k, "首都", countryMap[k])
}
}
查看元素在集合中是否存在
package main
import "fmt"
func main() {
countryMap := make(map[string]string)
countryMap["China"] = "Beijing"
countryMap["Japan"] = "Tokyo"
countryMap["India"] = "New Delhi"
countryMap["France"] = "Paris"
countryMap["Italy"] = "Rome"
//查看元素是否在map中存在
value, ok := countryMap["England"]
fmt.Printf("%q \n", value)
fmt.Printf("%T , %v \n", ok, ok)
if ok {
fmt.Println("首都:", value)
} else {
fmt.Println("首都信息未检索到!")
}
//或者
if value, ok := countryMap["USA"]; ok {
fmt.Println("首都:", value)
} else {
fmt.Println("首都信息未检索到!")
}
}
delete(map, key) 函数用于删除集合的某个元素,参数为map和其对应的key。删除函数不返回任何值。
Go语言没有为map提供清空所有元素的函数,清空map的唯一办法是重新make一个新的map。不用担心垃圾回收的效率,Go语言的垃圾回收比写一个清空函数更高效。
package main
import "fmt"
func main() {
//1、声明并初始化一个map
map1 := map[string]string{
"element": "div",
"width": "100px",
"height": "200px",
"border": "solid",
"background": "none",
}
//2、根据key删除map中的某个元素
fmt.Println("删除前:", map1)
if _, ok := map1["background"]; ok {
delete(map1, "background")
}
fmt.Println("删除后:", map1)
//3、清空map
//map1 = map[string]string{}
map1 = make(map[string]string)
fmt.Println("清空后:", map1)
}
map与切片相似,都是引用类型。将一个map赋值给一个新的变量时,它们指向同一块内存(底层数据结构)。修改两个变量的内容都能够引起它们所指向的数据发生变化。
package main
import "fmt"
func main() {
personSalary := map[string]int{
"Steven": 18000,
"Daniel": 5000,
"Josh": 20000,
}
fmt.Println("原始薪资:", personSalary)
newPersonSalary := personSalary
newPersonSalary["Daniel"] = 8000
fmt.Println("修改后newPersonSalary:", newPersonSalary)
fmt.Println("personSalary受影响情况:", personSalary)
}
虽然就底层而言,所有的数据都是由比特组成,但计算机一般操作的是固定大小的数,如整型、浮点型、布尔型、字符串、字符(byte、rune)等。进一步将这些数组织在一起,就可表达更多的对象。
Go语言提供了丰富的数据组织形式,这依赖于Go语言内置的数据类型。这些内置的数据类型,如函数与指针、数组、切片、map等,兼顾了硬件的特性和表达复杂数据结构的便捷性。
到此这篇关于Go语言中map集合的具体使用的文章就介绍到这了,更多相关Go语言中map集合内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Go语言中map集合的具体使用
本文链接: https://lsjlt.com/news/196576.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-05
2024-04-05
2024-04-05
2024-04-04
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0