From 9c2db5265903d0b7bff3c0afbfcc31e81b63f595 Mon Sep 17 00:00:00 2001 From: pengshiyu <1940607002@qq.com> Date: Thu, 15 Sep 2022 22:47:22 +0800 Subject: [PATCH] fix --- blog/golang/golang-slice.md | 202 +++++++++++++++++++++++++++++++++++- blog/golang/index.md | 5 +- 2 files changed, 202 insertions(+), 5 deletions(-) diff --git a/blog/golang/golang-slice.md b/blog/golang/golang-slice.md index 69c94e4..eeeb7ec 100644 --- a/blog/golang/golang-slice.md +++ b/blog/golang/golang-slice.md @@ -153,4 +153,204 @@ func main() { // s4: [1 2 3 4 5] } -``` \ No newline at end of file +``` + +## 切片的遍历 + +for循环 + +```go +package main + +import "fmt" + +func main() { + var s = []int{1, 2, 3, 4} + length := len(s) + + for i := 0; i < length; i++ { + fmt.Printf("s[%v]=%v\n", i, s[i]) + } + // s[0]=1 + // s[1]=2 + // s[2]=3 + // s[3]=4 +} + +``` + +for...range + +```go +package main + +import "fmt" + +func main() { + var s = []int{1, 2, 3, 4} + + for index, value := range s { + fmt.Printf("s[%v]=%v\n", index, value) + } + + // s[0]=1 + // s[1]=2 + // s[2]=3 + // s[3]=4 +} +``` + +## 切片的CURD(添加、删除、修改、查询) + +切片是动态数组 + +添加元素 + +```go +package main + +import "fmt" + +func main() { + var s = []int{} + + // 添加单个元素 + s = append(s, 1) + + // 添加多个元素 + s = append(s, 2, 3) + + fmt.Printf("s: %v\n", s) + // s: [1 2 3] + +} + +``` + +删除元素 + +```go +package main + +import "fmt" + +func main() { + var s = []int{1, 2, 3, 4, 5} + + // 删除元素3,索引为2 + // 公式:s = append(s[:index], s[index+1:]...) + s = append(s[:2], s[3:]...) + + fmt.Printf("s: %v\n", s) + // s: [1 2 4 5] +} + +``` + +修改元素 + +```go +package main + +import ( + "fmt" +) + +func main() { + var s = []int{1, 2, 3, 4, 5} + + s[2] = 6 + fmt.Printf("s: %v\n", s) + // s: [1 2 6 4 5] +} + +``` + +查询元素 + +```go +package main + +import ( + "fmt" +) + +func main() { + var s = []int{1, 2, 3, 4, 5} + + // 查询元素的索引 + for index, value := range s { + if value == 3 { + fmt.Printf("index: %v\n", index) + break + } + } + // index: 2 +} + +``` + +## 切片的复制 copy + +浅拷贝 + +```go +package main + +import ( + "fmt" +) + +func main() { + var s1 = []int{1, 2, 3, 4, 5} + + // 浅拷贝,地址引用,指向同一个对象 + var s2 = s1 + + s2[0] = 6 + + fmt.Printf("s1: %v\n", s1) + // s1: [6 2 3 4 5] + + fmt.Printf("s2: %v\n", s2) + // s2: [6 2 3 4 5] + +} + +``` + +深拷贝 + +```go +package main + +import ( + "fmt" +) + +func main() { + var s1 = []int{1, 2, 3, 4, 5} + + // copy目标容器,没有足够的空间接收数据 + var s2 = []int{} + copy(s2, s1) + + fmt.Printf("s2: %v\n", s2) + // s2: [] + + // copy目标容器,需要预先开辟足够的内存空间 + var s3 = make([]int, len(s1)) + copy(s3, s1) + s3[0] = 6 + + // s1没有被修改 + fmt.Printf("s1: %v\n", s1) + // s1: [1 2 3 4 5] + + // s3被修改了 + fmt.Printf("s3: %v\n", s3) + // s3: [6 2 3 4 5] + +} + +``` diff --git a/blog/golang/index.md b/blog/golang/index.md index 8108903..6cbad53 100644 --- a/blog/golang/index.md +++ b/blog/golang/index.md @@ -37,7 +37,4 @@ https://www.bilibili.com/video/BV1ME411Y71o?p=27&spm_id_from=pageDriver&vd_source=efbb4dc944fa761b6e016ce2ca5933da - - - -https://www.bilibili.com/video/BV1zR4y1t7Wj?p=33&spm_id_from=pageDriver&vd_source=efbb4dc944fa761b6e016ce2ca5933da \ No newline at end of file +https://www.bilibili.com/video/BV1zR4y1t7Wj?p=35&spm_id_from=pageDriver&vd_source=efbb4dc944fa761b6e016ce2ca5933da \ No newline at end of file -- GitLab