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