- 数组
声明
var 数组变量名 [元素数量] T
如:var team [3]string
初始化
- 在声明时初始化
var team=[3]string{“1”,”2”,”3”}
- 可以不写大小
var team=[…]string{“1”,”2”,”3”}
遍历
for k,v:=range team{
// k是元素下标,v是元素内容
}
二、slice
从数组或slice生成新的slice
格式:目标切片对象[开始位置索引:结束位置索引]
- 取出的元素个数=结束-开始;取出的元素不包含结束位置的索引
- 切片最后一个元素通过slice[len(slice)]获得
- 缺省开始位置时,默认连续区域开头;缺省结束位置默认连续区域末尾
- 开始与结束均为0,等效于空切片,用于切片复位
声明切片
var name[]T //相对于数组声明少了元素数量或者…
使用make构造切片
make([]T,size,cap)//size是元素个数,cap是容量
添加元素
切片名=append(切片名,添加的元素)
复制到另一个切片
实际发生复制的元素个数=copy(目标切片,源切片)
删除元素
指定删除位置index :=2
将删除位置之前和之后的元素连接起来:切片名=append(切片名[:index],切片名[index+1:]…)
三、map
创建map
变量名:=make(map[键类型]值类型)
map[键]=值
遍历
for k,v range 变量名{
}
map切片排序
scene:=make(map[string]int)
scene[“rou”]=6
// 声明一个slice保存mao
var sl []string
// 将map数据复制到slice中
for k:=range acene{
sl=append(sl)
}
// 对切片进行排序
sort.String(map切片名)
删除某键值对
delete(map变量名,键名)
清空map
唯一方法:重新make一个新的map,go语言的并行垃圾回收效率很高。
sync.Map
能够在并发环境中使用的map,具有以下特性:
- 无需初始化,直接声明即可
- 不能使用map的方式进行取值和设置等操作,而是使用sync.Map的方法进行调用。Store表示存储,Load表示获取,Delete表示删除
- 使用Range配合一个回调函数进行遍历操作,通过回调函数返回内部遍历出来的值。回调函数的返回值意义:需要继续遍历时返回true,不要时返回false
四、list列表
初始化
- 变量名:=list.New()
- var 变量名 list.List
插入元素
List变量名.PushBack(元素)
List变量名.PushFront(元素)
List变量名.InsertAfter(元素)
List变量名.InsertBefore(元素)
List变量名. PushBackList(待插入的列表指针)
List变量名. PushFrontList(待插入的列表指针)
遍历
for i:=xx.Front;i!=nil;i=i.Next{
}