接上一节继续学习Go语言,存储和组织数据的方式
首先我们来学习数组,数组是一段固定长度的连续内存区域。
数组声明:var 数组变量名[元素数量] T
//声明一个字符串数组
varteam [5]string
team[0] = "Hao"
team[1] = "do"
team[2] = "you"
team[3] = "do"
team[4] = "?"
//输出
fmt.Println(team)
输出:[Haodo you do ?]
遍历数组,访问每一个数组元素,然后输出。
//遍历数组,访问每一个数字元素
varnum [3]int
num[0] = 1
num[1] = 3
num[2] = 5
fork, v := range num {
fmt.Println(k, v)
}
输出:
0 1
1 3
2 5
切片(slice),动态分配大小的连续空间;切片的内部结构包含地址、大小和容量。
切片声明:var name[]T
//声明整型切片
varnumlist []int
//声明字符串切片
varstrlist []string
//声明一个空切片
varstrlistempty = []int{}
//输出三个切片
fmt.Println(numlist, strlist,strlistempty)
//切片判定空结果
fmt.Println(numlist == nil)
fmt.Println(strlist == nil)
fmt.Println(strlistempty ==nil)
输出:
[] [] []
true true false
下面我们使用make()函数构造切片,make([]T,size,cap),T:切片元素类型;size:切片分配多少个元素;cap:预分配的元素数量。
aa := make([]int, 2)
bb := make([]int, 2, 10)//容量不会影响当前元素个数
fmt.Println(aa, bb)
接下来我们看看怎么为切片添加元素,通过append函数添加元素。
//声明一个整型切片
varnumbers []int
fori := 0; i < 8; i++ {
//通过append函数添加元素
numbers = append(numbers, i)
}
//输出切片元素
fmt.Print(numbers)
输出:[01 2 3 4 5 6 7]
如果我们要复制一个切片元素到另一个切片怎么操作呢?
//设置元素数量为888
constelementcount = 888
//预分配足够多的元素切片
stcData := make([]int, elementcount)
//复制给切片
fori := 0; i <elementcount; i++ {
stcData[i]= i
}
//预分配足够多的元素切片
copyData := make([]int, elementcount)
copy(copyData,stcData)
//输出两个切片的第8个元素
fmt.Println(stcData[7], copyData[7])
输出:77
接下来我们怎么删除切片中的元素
//声明一个字符串切片
sep := []string{"a", "b", "c", "4", "d", "e"}
//指定删除位置
index := 3
//查看删除位置之前和之后的元素
fmt.Println(sep[:index],sep[index+1:])
//将删除点前后的元素连接起来
sep = append(sep[:index],sep[index+1:]...)
//输出新的切片
fmt.Println(sep)
输出:
[a b c] [d e]
[a b c d e]
GO语言中切片删除元素的本质是以删除元素为分界点,将前后两个部分的元素连接起来。
接下来我们映射(map),建立事物关联的容器,定义:map[KeyType] ValueType ; KeyType为键类型,ValueType为键对应的值类型。
scene := make(map[string]int)
//给对应键赋值
scene["route"] = 66
//输出键的值
fmt.Println(scene["route"])
mm := map[string]int{
"a": 1,
"b": 3,
"c": 5,
"d": 7,
}
//输出map
fmt.Println(mm)
输出:66
map[a:1 b:3 c:5 d:7]
遍历map的键值对,访问每一个map中的关联关系
//循环输出
fork, v := range mm {
fmt.Println(k, v)
}
输出:
a 1
b 3
c 5
d 7
删除map中的键值对使用delete()函数
//删除mm键值对中的b
delete(mm, "b")
//删除后输出
fork, v := range mm {
fmt.Println(k, v)
}
输出:
a 1
c 5
d 7
请开始你的表演,践行,践行,再践行。未完待续。。。
网友评论