GO 陣列與切片

2022-01-12 07:39:09 字數 1499 閱讀 3219

//var 變數名 [陣列的容量]型別 = [陣列的容量]型別

var a [4]int = [4]int

或者var a = [4]int

或者a := [4]int

//這幾個的結果為[1 2 3 0]

//接受長度有賦值的長度決定

package main

import "fmt"

func main()

//a :=[...]int

//但是無法使用var a [...]int = [...]int

//只能var a [3]int = [...]int

fmt.println(a)

}//結果為[1 2 3]

var a int = int

或者var a = int

或者a := int

//另外種方式用make建立

var a int=make(int,4,6) //長度4,容量6

var a int=make(int,4) //長度4,容量4

//只定義,沒有賦值,空值是nil型別

func main()

}//切片全部取值

for i,v:=range 切片物件

//如果有陣列a := [4]int

//我們要取第二個

b :=a[1]

//取第二個和第三個

b :=a[1,3]

//取第二個到最後乙個

b :=a[1:]

//此時切片的b的長度由切區陣列的個數決定

//此時切片的b的容量由切區陣列從切的位置到陣列末尾位置

補充

陣列變成索引其實切片就相當於建立了乙個索引指向陣列

切片或者陣列裡值發生變化,其對應陣列或者切片均會受到影響

比如

package main

import "fmt"

func main()

var b = a[1:2]

fmt.println(a,b)

}//列印結果[1 2 33] [2 33]

//兩個會相互受影響

package main

import "fmt"

func main()

var b = a[1:2]

fmt.println(a,b)

}//列印結果[1 2 3] [2 33 3]

//兩個不會受影響

//其實他底層發生了這樣一件事件

//如果超過定長,底層會重新複製切片那一段資料且容量為原先的兩倍

//而此時切片b的所有指向的位置也傳送改變改變為新開闢出來的那段資料

go陣列與切片

go陣列 陣列宣告 var variable name size variable type eg var balance 10 float32 陣列初始化 var balance 5 float32 初始化陣列中 中的元素個數不能大於 中的數字。如果忽略 中的數字不設定陣列大小,go 語言會根據元...

go陣列與切片

陣列是具有相同唯一型別的一組長度固定的資料項序列,這種型別可以是任意的原始型別,例如整形,字元型或者自定義型別。陣列長度必須是乙個常量的表示式,並且是乙個非負整數。陣列元素可以用個索引累讀取,陣列長度最大為2gb。宣告格式為 var identifier len type 複製 例如 var arr...

go陣列 切片

陣列 陣列指標 fmt.println 陣列指標 i int var p 10 int i fmt.println p fmt.println p x,y 1,2 j int fmt.println j k 2 int l 2 int fmt.println k l 指向陣列的指標 m new 5 ...