## 一、定義切片
~~~
package main
import "fmt"
func main() {
// 切片和數組不同的是,數組是指定長度的,切片是不指定長度的
// 空切片
var s1 []int
fmt.Println(s1)
s2 := []int{}
fmt.Println(s2)
// 使用make來申明切片
// 這里的0,0表示的是長度和容量都是0
var s3 =make([]int,0,0)
fmt.Println(s3)
s4 := []int{1,2,3,4}
fmt.Println(s4)
}
~~~
## 二、操作切片
append():向切片尾部添加數據
copy()
#### 實例1
~~~
package main
import "fmt"
func main() {
// 向空切片添加元素
var s1 []int
s1 = append(s1,0)
s1 = append(s1,1,2,3)
s1 = append(s1,4)
s1 = append(s1,5,6,7,8,9)
fmt.Println(s1)
//創建指定大小的切片
s2 := make([]int,5)
s2 = append(s2,6)
fmt.Println(s2)
// 創建并初始化切片
s3 := []int{1,2,3}
s3 = append(s3,4,5,6)
fmt.Println(s3)
}
~~~
運行結果為:
[0 1 2 3 4 5 6 7 8 9]
[0 0 0 0 0 6]
[1 2 3 4 5 6]
## 三、實例
#### 實例1
~~~
package main
import "fmt"
func main() {
// 定義一個數組
arr := [...]int{1,2,3,4,5,6,7,8,9}
//取切片
//這里的賦值可以理解為對原數組的一個映射,并沒有創建和copy出來一個新的切片
s1 :=arr[2:]
//修改值
s1[0] = 100
fmt.Println(s1)
fmt.Println(arr)
}
~~~
結果:
[100 4 5 6 7 8 9]
[1 2 100 4 5 6 7 8 9]
#### 實例2
~~~
package main
import "fmt"
func main() {
// 定義一個數組
arr := [...]int{1,2,3,4,5,6,7,8,9}
//取切片
//這里的賦值可以理解為對原數組的一個映射,并沒有創建和copy出來一個新的切片
s1 :=arr[2:]
//修改值
s1[0] = 100
//fmt.Println(s1)
//fmt.Println(arr)
s2 := arr[2:6]
fmt.Println(s2)
// go語言沒有取到的位置,可以向后延伸,不可向前延伸
s3 := s2[3:5]
fmt.Println(s3)
}
~~~
運行結果:
[100 4 5 6]
[6 7]
- 一、數組
- 二、切片
- 三、copy
- 四、MAP
- 五、結構體
- 六、結構體參數
- 七、面向”對象“
- 1、匿名字段
- 2、方法
- 3、包和封裝
- 4、接口
- 5、異常處理
- 八、Json
- 九、文件操作
- 1、寫文件
- 2、讀取文件內容
- 3、拷貝文件
- 十、反射
- 1、查看類型,字段和方法
- 2、查看匿名字段
- 3、修改基本類型的值
- 4、修改結構體的值
- 5、調用方法
- 十一、并發編程
- 1、并行和并發
- 2、協程
- 3、runtime包
- 5、channel的使用
- 6、close
- 7、定時器
- 8、select
- 9、協程同步鎖
- 十二、socket編程
- 十三、Http編程
- 十四、并發爬蟲和數據處理
- 1、簡易爬蟲實例
- 2、并發爬取圖片
- 3、讀文件中的數據
- 4、數據清洗
- 其他
- 1、推薦文章