Go 数组、slice、map
1. 数组
go中的数组需要提前定义好长度
- 初始化 1
var course [3]string
course[0] = "go"
course[1] = "grpc"
course[2] = "gin"
- 初始化 2
course := [3]string{"go", "grpc", "gin"}
- 初始化 3
根据元素初始化长度
course := [...]string{"go", "grpc", "gin"}
- 初始化 4
course := [3]string{1: "gin"}
这种指定索引的初始化,其他位置会为类型的零值
[ gin ]
- 多维数组
var course [3][4]string
course[0] = [4]string{"go", "gin", "grpc", "gogo"}
course[1] = [4]string{"go", "gin", "grpc", "gogo"}
course[2] = [4]string{"go", "gin", "grpc", "gogo"}
2. slice
- append添加元素,常用
var course []string
course = append(course, "go")
course = append(course, "gin")
course = append(course, "grpc")
- 从数组添加元素
allCourse := [3]string{"go","grpc","gin"}
course := allCourse[0:1]
- make函数添加元素
make函数可以提前分配好slice的大小,避免slice频繁扩容,索引不可以超
course := make([]string, 3)
course[0] = "go"
- 取值
前包后不包
course := make([]string, 3)
// 从0到1
fmt.Println(course[0:1])
// 头开始到1
fmt.Println(course[:1])
// 1开始到结束
fmt.Println(course[1:])
// 所有
fmt.Println(course[:])
- 组合slice
course1 := []string{"go", "grpc"}
course2 := []string{"mysql", "redis", "mongodb"}
course1 = append(course1, course2...)
course1 = append(course1, course2[1: ]...)
- 删除slice中元素(只能这样)
course1 := []string{"go", "grpc", "mysql", "redis", "mongodb"}
course1 = append(course1[:2], course1[3:]...)
- 拷贝
course1 := []string{"go", "grpc"}
// 浅拷贝,复制内存地址
course2 := course1
// 浅拷贝,复制内存地址
course3 := course1[:]
// 深拷贝,复制值
course4 := make([]string, len(course1))
copy(course4, course1)
course1[0] = "更改"
fmt.Println(course1, course2, course3, course4)
// [更改 grpc] [更改 grpc] [更改 grpc] [go grpc]
3. map
- 初始化
map定义之后必须初始化
map中最后一个值也要带逗号
map[key值类型]value值类型{}
course := map[string]string{
"key1": "value1",
"key2": "value2",
}
// 或
course := make(map[string]string, 3)
- 添加
course["key3"] = "value3"
- 遍历
for key, value := range course {
fmt.Println(key, value)
}
for _, value := range course {
fmt.Println(value)
}
for key := range course {
fmt.Println(key)
}
- 判断是否存在
value, ok := course["key11"]
if !ok {
fmt.Println("不存在")
} else {
fmt.Println("值" + value)
}
// 简写
if _, ok := course["key1"]; !ok {
fmt.Println("不存在")
} else {
fmt.Println("存在")
}
- 删除元素
delete(course, "key1")
初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!