您的位置 首页 java

ch10、Map声明、元素访问及遍历

1、Map声明

声明方式:

 map[keyType]valueType{}  
 package my_map

import "testing"

func TestInitMap(t *testing.T) {
// 方法一,初始化指定类型和值
m1 := map[int]int{1: 1, 2: 2, 3: 3} // map[key type]value type{}
t.Log(m1[2])
t.Logf("len m1=%d", len(m1))

// 方法二,初始化为指定key类型和空值
m2 := map[string]int{}
m2["test01"] = 14
t.Logf("len m2=%d", len(m2))

// 方法三,使用make关键字初始化(其中,map的cap不可用,需使用len来获取大小)
m3 := make(map[int]int, 10/* Initial Capacity */)
t.Logf("len m3=%d", len(m3))
}  

访问map中不存在的key时,go语言会返回零值,不能通过返回 nil 来判断元素是否存在,由此产生一个问题:

 package my_map

import "testing"


func TestAccessNotExistingKey(t *testing.T) {
m1 := map[int]int{}
t.Log(m1[2]) // output:0,default
m1[2] = 0
t.Log(m1[2]) // output:0

// 通过返回的状态位来判断,如果存在,则是true,不存在则是false
 if  v, ok := m1[3]; ok {
t.Logf("Key 3's value is %d", v)
} else {
t.Log("Key 3's not existing.")// output
}
}
  

2、Map遍历

遍历所有的key、value值,通过for + range实现

 package my_map

import "testing"

func TestTravelMap(t *testing.T) {
m1 := map[int]int{1: 1, 2: 2, 3: 3}
for k, v := range m1 {
t.Log(k, v)
}
}
  

3、Map删除

通过Go语言内置delete函数删除指定元素

 package main

import "fmt"

func main() {
var dict = map[string]string{"name": "lnj", "age": "33", "gender": "male"}
fmt.Println("删除前:", dict) // map[name:lnj age:33 gender:male]
// 第一个参数: 被操作的字典
// 第二个参数: 需要删除元素对应的key
delete(dict, "name")
fmt.Println("删除后:", dict) // map[age:33 gender:male]
}  

文章来源:智云一二三科技

文章标题:ch10、Map声明、元素访问及遍历

文章地址:https://www.zhihuclub.com/196152.shtml

关于作者: 智云科技

热门文章

网站地图