go學習記 (10)陣列與切片

2021-10-08 19:35:18 字數 3335 閱讀 6495

陣列與切片

陣列陣列是值型別。取位址&變數名;

陣列的第乙個元素的位址,就是陣列的位址;

陣列的每個元素的位址間隔是依據陣列的型別決定,比如int64-》8 interweb2-》4

四種陣列初始化方式

var numsarray01 [3]

int=[3

]int

var numsarray02 =[3

]int

var numsarray03 =

[...

]int

var numsarray04 =[3

]string

fmt.

println

(numsarray01)

fmt.

println

(numsarray02)

fmt.

println

(numsarray03)

fmt.

println

(numsarray04)

// 迴圈

for_

, value :=

range numsarray01

陣列的注意事項和細節

陣列是多個相同型別資料的組合,乙個陣列一旦宣告/定義了,其長度是固定的,不能動態變化。

var arr int 這時arr就是乙個slice切片。

陣列中的元素可以是任何資料型別,包括值型別和引用型別,但不能混用。

陣列建立後,如果沒有賦值,有預設值

使用陣列的步驟:

陣列的下標是從0開始的

陣列下標必須在指定範圍內使用,否則報panic:陣列越界。

go的陣列屬於值型別,在預設情況下是值傳遞,因此會進行值拷貝。陣列間不會相互影響。

如想在其他函式中,去修改原來的陣列,可以使用引用傳遞(指標方式)。

長度是陣列型別的一部分,在傳遞函式引數時需要考慮陣列的長度。 切片

切片的基本介紹

切片的英文是slice

切片是陣列的乙個引用,因此切片是引用型別,在進行傳遞時,遵守引用傳遞的機制。

切片的使用和陣列類似,遍歷切片、訪問切片的緣故和求切片長度len(slice)都一樣。

切片的長度時可以變化的,因此切片時乙個可以動態變化陣列。

切片定義的基本語法:var 變數名 型別

切片使用的三種方式

// 通過陣列建立切片

var arr1 =

[...

]int

var s1 = arr1[0:

2]// make建立切片

// var 切片名 type = make(type,len,[cap])

var s2 [

]int

=make([

]int,3

,5)// 直接賦值

var s3 [

]int=[

]int

方式1和方式2的區別(面試)

方式1是直接引用陣列,這個陣列是事先存在的,程式設計師是可見的。

方式2是通過make來建立切片,make也會建立乙個陣列,是由切片在底層進行維護,程式設計師是不可見。

string 與 slice

string底層是乙個byte陣列,因此string也可以進行切片處理

陣列與切片

陣列陣列是值型別。取位址&變數名;

陣列的第乙個元素的位址,就是陣列的位址;

陣列的每個元素的位址間隔是依據陣列的型別決定,比如int64-》8 interweb2-》4

四種陣列初始化方式

var numsarray01 [3]

int=[3

]int

var numsarray02 =[3

]int

var numsarray03 =

[...

]int

var numsarray04 =[3

]string

fmt.

println

(numsarray01)

fmt.

println

(numsarray02)

fmt.

println

(numsarray03)

fmt.

println

(numsarray04)

// 迴圈

for_

, value :=

range numsarray01

陣列的注意事項和細節

陣列是多個相同型別資料的組合,乙個陣列一旦宣告/定義了,其長度是固定的,不能動態變化。

var arr int 這時arr就是乙個slice切片。

陣列中的元素可以是任何資料型別,包括值型別和引用型別,但不能混用。

陣列建立後,如果沒有賦值,有預設值

使用陣列的步驟:

陣列的下標是從0開始的

陣列下標必須在指定範圍內使用,否則報panic:陣列越界。

go的陣列屬於值型別,在預設情況下是值傳遞,因此會進行值拷貝。陣列間不會相互影響。

如想在其他函式中,去修改原來的陣列,可以使用引用傳遞(指標方式)。

長度是陣列型別的一部分,在傳遞函式引數時需要考慮陣列的長度。 切片

切片的基本介紹

切片的英文是slice

切片是陣列的乙個引用,因此切片是引用型別,在進行傳遞時,遵守引用傳遞的機制。

切片的使用和陣列類似,遍歷切片、訪問切片的緣故和求切片長度len(slice)都一樣。

切片的長度時可以變化的,因此切片時乙個可以動態變化陣列。

切片定義的基本語法:var 變數名 型別

切片使用的三種方式

// 通過陣列建立切片

var arr1 =

[...

]int

var s1 = arr1[0:

2]// make建立切片

// var 切片名 type = make(type,len,[cap])

var s2 [

]int

=make([

]int,3

,5)// 直接賦值

var s3 [

]int=[

]int

方式1和方式2的區別(面試)

方式1是直接引用陣列,這個陣列是事先存在的,程式設計師是可見的。

方式2是通過make來建立切片,make也會建立乙個陣列,是由切片在底層進行維護,程式設計師是不可見。

string 與 slice

string底層是乙個byte陣列,因此string也可以進行切片處理

Go基礎學習 陣列與切片

固定長度同一種資料型別元素的集合 陣列宣告 var a 2 int var 陣列名 長度 存放的型別 陣列初始化 1,使用初始化列表來設定陣列元素的值 var a 3 int 陣列會初始化為int型別的零值 var b 3 int 使用指定的初始值完成初始化 2,使用指定索引值的方式來初始化陣列 c...

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...