Go语言数组和切片

数组

数组声明

var v = [...]int{1, 2, 4, 5, 7}
var arr [5]int
arr[0] = 1
arr[1] = 2
fmt.Printf("%v", arr)

声明并初始化

var arr1 = [5] int {1,2,3,4,5}
arr2 := [5] int{1,2,3,4,5}

使用len获取数组的长度

数组遍历

arr2 := [5]int{1, 2, 3, 4, 5}
for _, value := range arr2 {
    fmt.Printf("%v\n", value)
}

切片

没有长度的数组称为切片

var num [] int
num := make([] int ,len,cap)

len返回切片的长度,cap返回切片的容量 一个 slice 由三个部分构成:指针 、 长度 和 容量 。指针指向第一个 slice 元素对应的底层数组元素的地址,要注意的是 slice 的第一个元素并不一定就是数组的第一个元素。长度对应 slice 中元素的数目;长度不能超过容量,容量一般是从 slice 的开始位置到底层数据的结尾位置。简单的讲,容量就是从创建切片索引开始的底层数组中的元素个数,而长度是切片中的元素个数

切片的使用

下标获取或截取

arr := []int{1, 2, 3, 4, 5}
fmt.Printf("arr[0]: %v\n", arr[0])
fmt.Printf("arr[0:4]: %v\n", arr[0:4])
fmt.Printf("arr[2:]: %v\n", arr[2:])

追加

arr = append(arr,6)

删除

arr = append(arr[:2], arr[3:]...) //删除中间某个元素
fmt.Printf("%v", arr)
arr = append(arr[:len(arr)-1]) //删除最后一个元素
fmt.Printf("%v", arr)

Map

map 是散列表(哈希表)的引用。它是一个拥有键值对元素的无序集合,在这个集合中,键是唯一的,可以通过键来获取、更新或移除操作。无论这个散列表有多大,这些操作基本上是通过常量时间完成的

var scores= map[string]int{"语文":60}
var info1 = map[string]string{"name": "tom", "age": "20"}
//方式2
info := make(map[string]string)
info["name"] = "TOme"
fmt.Printf("%v", info)
fmt.Printf("%v", info1)

map操作

追加

scores["数学"] =80

更新

scores["语文"] =70

删除

delete(scores,"数学")

判断Key是否存在

_, ok := scores["语文"]
fmt.Println(ok)

遍历

for _, v := range scores {
    fmt.Printf("%v",v)
}

Go语言数组和切片
http://www.jcwit.com/article/124/
作者
Carlos
发布于
2022年7月17日
许可协议