通過關鍵字new申請一塊指定型別的儲存空間並返回乙個對應型別的指標package main
import
"fmt"
func
main()
值傳遞和位址傳遞package main
import
"fmt"
func
main()
package main
import
"fmt"
func
swap
(a,b int
)func
main()
//1,2和1,2
//位址傳遞才能實現真正的值交換
package main
import
"fmt"
func
swap
(a,b *
int)
func
main()
//1,2和2,1
package main
import
"fmt"
func
main()
}
陣列作為函式引數//第一種陣列初始化形式
package main
import
"fmt"
func
main()
for i:=
0;i<
len(a)
;i++
//指定對應下標的值,其他下標自動賦值0
b:=[5
]int
for key,val:=
range b
}
package main
import
"fmt"
func
modify
(a [5]
int)
func
main()
//陣列做函式引數時是值傳遞,將陣列的值拷貝乙份傳遞給其他函式,本身並不會被修改
modify
(a) fmt.
println
(a)}
切片是一種引用型別,類似於結構體,共包含三種資料:指向slice的指標;容量;長度package main
import
"fmt"
func
modify
(p *[5
]int
)func
main()
fmt.
println
(a)//將陣列位址傳遞過去
modify
(&a)
fmt.
println
(a)}
copy()的使用package main
import
"fmt"
func
main()
//定義切片
slice1:=
int//array[start:end:cap]
//len=end-start 已使用容量
//cap=cap-start 切片容量
s:=array[0:
4:5]
fmt.
println
(s) fmt.
println
("len(array):"
,len
(array)
) fmt.
println
("len(s):"
,len
(s))
fmt.
println
("cap(s):"
,cap
(s))
//對於乙個引用的改變,其他也都會發生改變
s1 :=array[:]
s2 :=array[:3
]//使用make來構造切片make(slice,len,cap)
s3 :=
make([
]int
,len
,cap
) s3=
(s3, s2...
)//向乙個切片中新增另乙個切片
s3.(s3,12)
//容量擴充按照兩倍的容量擴充
}
map是乙個引用型別,因此對於map的所有修改都是保持一致的package main
import
"fmt"
func
main()
des:=
int//按照順序依次覆蓋
copy
(des,src)
fmt.
println
(src)
//[1,2,3,4]
fmt.
println
(des)
//[1,2,3,4,0]
}
package main
import
"fmt"
func
main()
map1[0]
="liuzaishi"
map1[1]
="wangbizi"
map1[2]
="jinzhongguo"
fmt.
println
(map1)
map2:=
map[
string
]int
fmt.
println
(map2)
}
package main
import
"fmt"
func
main()
//使用for each遍歷map
for key,val :=
range m1
//判斷對應的key是否存在
value,ok:=m1[0]
if ok
else
結構體型別的引用傳遞和值傳遞package main
import
"fmt"
type student struct
func
main()
var stu2 student=student
fmt.
println
("stu1:"
,stu1)
fmt.
println
("stu2"
,stu2)
//指定成員初始化,其餘成員賦值為對應的零值
stu3:=student
fmt.
println
(stu3)
//結構體指標型別
p1:=
&student
fmt.
println
(p1)
}
package main
import
"fmt"
type student struct
func
test01
(s student)
func
test02
(s *student)
func
main()
var stu2 student=student
//不會修改物件的值
test01
(stu1)
fmt.
println
(stu1)
//會修改原物件的值
test02
(&stu2)
fmt.
println
(stu2)
}
c 學習筆記之復合資料型別
陣列是一連串在記憶體中連續儲存的相同資料型別的元素集合,並且每個元素都可以通過唯一的索引來訪問。以上是乙個含有 5個 int 型別資料的陣列。可以這樣來宣告它,int foo 5 注意 中括號裡是陣列的長度,必須是常量,因為陣列是一系列靜態記憶體塊,其大小在編譯時就確定了。tips 幾種初始化方式介...
go 復合型別
1.陣列 1 陣列是擁有固定長度且擁有零個或者多個相同資料型別元素的序列。2 初始值預設為元素型別的零值 3 如果 出現在陣列長度的位置,則陣列的長度由初始化陣列的元素個數決定 4 陣列長度是陣列型別的一部分,3 int 和 4 int 是不同的型別,不能互相賦值 也就是說陣列長度在編譯時就已經確定...
GO 復合型別 切片
相當於長度可以擴張的陣列 經過陣列擷取的片段就是切片 func main01 擷取陣列的前9位 slice array 0 9 fmt.printf array的資料型別是 t n array fmt.printf slice的資料型別是 t,值是 v n slice,slice 下標為0開始擷取5...