//var 變量名 [數組的容量]類型 = [數組的容量]類型{值1,值2} var a [4]int = [4]int{1,2,3} 或者 var a = [4]int{1,2,3} 或者 a := [4]int{1,2,3} //這幾個的結果爲[1 2 3 0] //接受長度有賦值的長度決定 package main import "fmt" func main(){ var a = [...]int{1,2,3} //a :=[...]int{1,2,3} //可是沒法使用var a [...]int = [...]int{1,2,3} //只能var a [3]int = [...]int{1,2,3} fmt.Println(a) } //結果爲[1 2 3]
var a []int = []int{1,2,3} 或者 var a = []int{1,2,3} 或者 a := []int{1,2,3}
//若是有數組a := [4]int{1,2,3,4} //咱們要取第二個 b :=a[1] //取第二個和第三個 b :=a[1,3] //取第二個到最後一個 b :=a[1:] //此時切片的b的長度由切區數組的個數決定 //此時切片的b的容量由切區數組從切的位置到數組末尾位置
補充數組
數組變成索引其實切片就至關於建立了一個索引指向數組app
切片或者數組裏值發生變化,其對應數組或者切片均會受到影響code
好比blog
package main import "fmt" func main(){ a := [3]int{1,2,3} var b = a[1:2] b= append(b,33) fmt.Println(a,b) } //打印結果[1 2 33] [2 33] //兩個會相互受影響
package main import "fmt" func main(){ a := [3]int{1,2,3} var b = a[1:2] b= append(b,33,3) fmt.Println(a,b) } //打印結果[1 2 3] [2 33 3] //兩個不會受影響 //其實他底層發生了這樣一件事件 //若是超過定長,底層會從新複製切片那一段數據且容量爲原先的兩倍 //而此時切片b的全部指向的位置也發送改變改變爲新開闢出來的那段數據