网页制作与网站发布,汕头网站设计浩森宇特,成都专业的网站建设公司,网站做3年Go语言中的字典
字典就是存储键值对映射关系的集合#xff0c;在Go语言中#xff0c;需要在声明时指定键和值的类型#xff0c;此外Go语言中的字典是个无序集合#xff0c;底层不会按照元素添加顺序维护元素的存储顺序。
如下所示#xff0c;Go语言中字典的简单示例在Go语言中需要在声明时指定键和值的类型此外Go语言中的字典是个无序集合底层不会按照元素添加顺序维护元素的存储顺序。
如下所示Go语言中字典的简单示例
func DictExample() {var tempMap map[string]inttempMap map[string]int{one: 1,two: 2,three: 3,}k : twov, ok : tempMap[k]// ok如果key存在则ok为true否则ok为falseif ok {fmt.Printf(the element of key %q:%d, k, v)} else {fmt.Println(Not found!)}
}
1 字典声明
字典的声明基本上没有多余的元素例如
var tempMap map[string]int
// tempMap声明的字典变量名
// string字典键的类型
// int字典值的类型
2 字典初始化
Go语言中可以先声明再初始化变量也可以通过 : 将字典的声明和初始化合并为一条语句
testMap : map[string]int{one: 1,two: 2,three: 3,
}
打印字典testMap发现其并没有按照存储的顺序进行打印这是因为Go语言中字典是个无序集合。 在Go语言中字典的初始化通常要和初始化在一起进行如果分开了出现编译的报错如下所示
var tempMap map[string]int
tempMap[one] 1 如果需要初始化一个空的字典需要使用Go语言内置的 make() 函数
var tempMap make(map[string]int)
tempMap[one] 1 还可以通过 make() 函数的第二个参数选择是否在创建的时候指定该字典的初始化存储容量超出会自动扩容
testMap make(map[string]int, 100)
3 元素赋值
字典的赋值指定键值对即可如下所示
testMap[one] 1
注字典初始化之后才能进行赋值操作如果仅仅是声明此时字典的值为 nil 在nil 上进行操作编译时会报panic导致编译不通过。
4 查找元素
Go语言中通过如下的代码查找特定的键值对
value, ok : testMap[one]
if ok {// 字典中存储键one对应的值
}
// 如上代码value是真正返回的键值ok是是否在字典中找到key对应值的标识这是一个布尔值如果查找成功返回true否则返回false
5 删除元素
Go语言中使用delete() 用于删除容器内的元素也能够用来删除字典元素如下所示
delete(testMap,one)
执行删除时如果“one”不存在或者字典尚未进行初始化也不会产生报错。
6 遍历元素
Go语言中可以像遍历数组一样对字典进行遍历如下所示
testMap : map[string]int{one:1,two:2,three:3
}for key,value : range testMap {fmt.Println(key, value)
} 也可以使用匿名变量只获取字典的值
for _,value : range testMap {fmt.Println( value)
}
或者只获取字典的键
for key : range testMap {fmt.Println(key)
} 7 键值对调
testMap : map[string]int{one: 1,two: 2,three: 3,
}newMap : make(map[int]string)for k, v : range testMap {newMap[v] k
}for k, v : range newMap {fmt.Println(k, v)
} 8 字典排序
Go语言中的字典是个无序集合如果想要对字典进行排序可以通过分别为字典的键或值创建切片然后通过对切片进行排序实现。
按照键进行排序
testMap : map[string]int{one: 1,two: 2,three: 3,
}
// 创建切片
keys : make([]string, 0)
for key : range testMap {keys append(keys, key)
}
// 切片排序
sort.Strings(keys)
for _, v : range keys {fmt.Println(v, testMap[v])
} 按照值进行排序
testMap : map[string]int{one: 1,two: 2,three: 3,
}
// 创建切片
values : make([]int, 0)
for _, value : range testMap {values append(values, value)
}
// 对字典的值进行排序
sort.Ints(values)
for _, v : range values {fmt.Println(v)
}