什麼是數組?數組
數組是一個由固定長度的特定類型元素組成的序列,一個數組能夠由零個或多個元素組成數據結構
數組定義的方法?ide
方式一 函數
package main import "fmt" func arraytest() { var x [3] int fmt.Println(x) } // 輸出 [0 0 0] func main() { arraytest() }
使用快速聲明數組code
x3 :=[3] int {112,78} fmt.Println(x3) 輸出 [112 78 0]
// 數組值的獲取索引
var x2[3] int x2[0] = 1 //第一個元素 x2[1] = 11 x2[2] = 22 fmt.Println(x2) 輸出 [1 11 22]
// 使用for 循環獲取數組的數據ci
x6 :=[...] int {3,5,6,82,34} for i :=0; i< len(x6);i++{ fmt.Println(i,x6[i]) } // 輸出 以下 0 表示索引號, 3表示 對應的具體值 0 3 1 5 2 6 3 82 4 34
// go 語言中提供使用range 的方式獲取it
for i,v := range x6{ fmt.Printf("%d of x6 is %d\n",i,v) } // 輸出 0 3 1 5 2 6 3 82 4 34
// 只訪問元素class
for _,v1 :=range x6 { fmt.Printf("x6 array value is %d\n",v1) } // 輸出 0 of x6 is 3 1 of x6 is 5 2 of x6 is 6 3 of x6 is 82 4 of x6 is 34
什麼是切片(slice)?test
切片(slice)是 Golang 中一種比較特殊的數據結構,這種數據結構更便於使用和管理數據集合
// 切片的定義
package main
import "fmt"
func slicetest() {
a1 :=[4] int {1,3,7,22}
fmt.Println(a1)
// 輸出 [1 3 7 22] var b1 []int = a1[1:4] fmt.Println(b1,len(b1)) // 輸出 [3 7 22] 3
}
func main() {
slicetest()
}
// 使用make 聲明切片
make 初始化函數切片的時候,若是不指明其容量,那麼他就會和長度一致,若是在初始化的時候指明瞭其容量
s1 :=make([]int, 5) fmt.Printf("The length of s1: %d\n",len(s1)) # 長度 fmt.Printf("The capacity of; s1: %d\n",cap(s1)) # cap 容量 fmt.Printf("The value of s1:%d\n",s1) // 輸出 The length of s1: 5 The capacity of; s1: 5 The value of s1:[0 0 0 0 0] s12 :=make([]int, 5,8) # 指明長度爲 5, 容量爲8 fmt.Printf("The length of s12: %d\n",len(s12)) fmt.Printf("The capacity of; s12: %d\n",cap(s12)) fmt.Printf("The value of s12:%d\n",s12) // 輸出 The length of s12: 5 The capacity of; s12: 8 The value of s12:[0 0 0 0 0] // s3 := []int{1, 2, 3, 4, 5, 6, 7, 8} s4 := s3[3:6] fmt.Printf("The length of s4: %d\n", len(s4)) fmt.Printf("The capacity of s4: %d\n", cap(s4)) fmt.Printf("The value of s4: %d\n", s4) // 輸出 The length of s4: 3 # 長度爲3 The capacity of s4: 5 # 容量爲5 The value of s4: [4 5 6] // 切片與數組的關係 切片的容量能夠當作是底層數組元素的個數 s4 是經過s3 切片得到來的,因此s3 的底層數組就是s4 的底層數組,切片是沒法向左拓展的,因此s4 沒法看到s3 最左邊的三個元素,因此s4 的容量爲5
// 切片的獲取
before_slice :=[] int {1,4,5,23,13,313,63,23} after_slice := before_slice[3:7] fmt.Println("array before change",before_slice) // 使用for range 遍歷 for i := range after_slice{ after_slice[i]++ } fmt.Println("after cahnge",before_slice)
// 輸出
array before change [1 4 5 23 13 313 63 23]
after cahnge [1 4 5 24 14 314 64 23]
數組和切片的區別
容量是否可伸縮 ? 數組容量不能夠伸縮,切片能夠
是否能夠進行比較? // 相同長度的數組能夠進行比較