Go 指標,陣列,切片,Map

2021-10-01 20:57:35 字數 4311 閱讀 1247

附上

go 引用的方式只有一種 : 值傳遞

package main

import

"fmt"

/**go 指標:

1.值,引用傳遞:

值: 值進行拷貝

引入: 位址的引用

2.go 引用的方式只有一種 : 值傳遞

*/func

main()

/** 指標操作的2數互換

*/func

swap

(a,b *

int)

func

swapk

(a,b int)(

int,

int)

package main

import

"fmt"

/**陣列:

1. 定義陣列

2. 遍歷陣列

3. range 遍歷

4. 陣列是值型別: 值拷貝

在陣列進行輪詢的時候對某些角標值修改值的時候,因為陣列是型別,是值拷貝,不會影響陣列原來的值

如果需要引用的話,可以加指標操作

5. go語言一般不使用陣列,是切片

*/func

main()

arr3 :=

[...

]int

var grid [4]

[5]int

printarr

(arr1)

printarr

(arr3)

//列印內容

fmt.

println

(arr1,

" "

,arr2,

" "

, arr3,

" "

, grid)

//使用 range 列印 index value

for i,v:=

range arr3

fmt.

println

("\n"

)//如果只需要值的可以這樣遍歷

for_

,v:=

range arr3

/** 列印結果:

1000 0

0 0100

21 33

49 54

[0 0 0 0 0] [1 2 3] [10 21 33 49 54] [[0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0]]

0 10

1 21

2 33

3 49

4 54

10 21

33 49

54 */

}func

printarr

(arr [5]

int)

fmt.

println

(arr[i])}

fmt.

println

("\n"

)}

package main

import

"fmt"

/**go 語言很重要部分: slice

1. slice 擴充套件

2. 向slice新增元素

*/func

main()

//半開半閉區間操作:

//arr[2:5] --> arr[2] ... arr[4]

//故結果: [392 22 9]

fmt.

println

(arr[2:

5]) s1:=arr[2:

] fmt.

println

(s1)

updatearr

(s1)

fmt.

println

(s1)

s2:=arr[:]

fmt.

println

(s2)

/** 列印:

[392 22 9]

[392 22 9 4]

[99 22 9 4]

[2 23 99 22 9 4]

*///slice 擴充套件

var sa =

int fmt.

println

(sa)

ss1:=sa[2:

6]ss2:=ss1[3:

5]fmt.

println

("ss1 : "

,ss1)

fmt.

println

("ss2 : "

,ss2)

/** [0 1 2 3 4 5 6 7]

ss1 : [2 3 4 5]

ss2 : [5 6]

slice 可以向後擴充套件 不可以向前擴充套件

s[i] 不可以超越len(s),向後擴充套件不可以超越底層陣列 cap(s)

*///列印相應的 caps

fmt.

printf

("ss1 = %v, len(ss1) = %d , cap(ss1) = %d \n"

,ss1,

len(ss1)

,cap

(ss1)

) fmt.

printf

("ss2 = %v, len(ss2) = %d , cap(ss2) = %d \n"

,ss2,

len(ss2)

,cap

(ss2)

)/**

ss1 = [2 3 4 5], len(ss1) = 4 , cap(ss1) = 6

ss2 = [5 6], len(ss2) = 2 , cap(ss2) = 3

*/}func

updatearr

(arr [

]int

)

package main

import

"fmt"

/**操作 slice:

2. copy slice

3. delete one element from slice

4. remove from head and tail

*/func

main()

func

printslice

(arr [

]int

)

package main

import

"fmt"

/**map :

1.建立方式: 這個是 hashmap 型別

m:=map[string]string{}

m:=make(map[string]int)

2.獲取元素

3.判斷元素是否存在 if

4.刪除某個元素

5.range 遍歷

6.key 型別:

除了 slice map function 內建型別都可以作為 key

struct型別不包含上述字段,也可以作為 key

*/func

main()

//新增元素

m["lai"]=

"lai"

m["hao"]=

"hao"

m["da"]=

"da"

printmap

(m)/**

lai lai

hao hao

da da

*///刪除元素

delete

(m,"lai"

)printmap

(m)/**

hao hao

da da

*///修改元素

m["hao"]=

"hahahaha.."

printmap

(m)/**

hao hahahaha..

da da

*///判斷元素是否存在

key,ok:=m[

"da"

] fmt.

println

(key, ok)

// da true

if key,ok:=m[

"da"

]; ok

else

//存在此 key da

}func

printmap

(m map

[string

]string

) fmt.

println(""

)}

Go 陣列 多維陣列 切片 map 2

迴圈 for 1,通常 for i 0 i 5 i 不常用 goto 陣列 定義 1,定義陣列 vara 3 int varb 4 int 2,定義時初始化 var testarray 3 string 3,編譯器推導陣列長度 var testarray string 4,使用索引值初始化 var ...

go語言學習 陣列 切片 map

go語言中陣列的特點 陣列的長度是固定的,並且長度也是陣列型別的一部分 是值型別,在賦值或者作為引數傳遞時,會複製整個陣列,而不是指標 定義陣列的語法 var arr1 5 int 5 int 未初始化的值,就預設初始化為該型別的預設值 var arr2 int 3 int 長度可由初始化的元素個數...

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