-
gjb 5880-2006中关于软件配置管理的slice对应数组信息
资源介绍
图2.4 slice对应数组的信息
对于slice有几个有用的内置函数:
len 获取slice的长度
cap 获取slice的最大容量
append 向slice里面追加一个或者多个元素,然后返回一个和slice一样类型的slice
copy 函数copy从源slice的src中复制元素到目标dst,并且返回复制的元素的个数
注:append函数会改变slice所引用的数组的内容,从而影响到引用同一数组的其它slice。 但当slice中没有剩
余空间(即(cap-len) == 0)时,此时将动态分配新的数组空间。返回的slice数组指针将指向这个空间,而原
数组的内容将保持不变;其它引用此数组的slice则不受影响。
mapmap
map也就是Python中字典的概念,它的格式为map[keyType]valueType
我们看下面的代码,map的读取和设置也类似slice一样,通过key来操作,只是slice的index只能是`int`类
型,而map多了很多类型,可以是int,可以是string及所有完全定义了==与!=操作的类型。
// 声明一个key是字符串,值为int的字典,这种方式的声明需要在使用之前使用make初始化
var numbers map[string] int
// 另一种map的声明方式
numbers := make(map[string]int)
numbers["one"] = 1 //赋值
numbers["ten"] = 10 //赋值
numbers["three"] = 3
fmt.Println("第三个数字是: ", numbers["three"]) // 读取数据
// 打印出来如:第三个数字是: 3
这个map就像我们平常看到的表格一样,左边列是key,右边列是值
使用map过程中需要注意的几点: - map是无序的,每次打印出来的map都会不一样,它不能通过index获取,而必
须通过key获取 - map的长度是不固定的,也就是和slice一样,也是一种引用类型 - 内置的len函数同样适用于
map,返回map拥有的key的数量 - map的值可以很方便的修改,通过numbers["one"]=11可以很容易的把key为
one的字典值改为11
map的初始化可以通过key:val的方式初始化值,同时map内置有判断是否存在key的方式
通过delete删除map的元素:
// 初始化一个字典
rating := map[string]float32 {"C":5, "Go":4.5, "Python":4.5, "C++":2 }
// map有两个返回值,第二个返回值,如果不存在key,那么ok为false,如果存在ok为true
csharpRating, ok := rating["C#"]
if ok {
fmt.Println("C# is in the map and its rating is ", csharpRating)
49