Go學習筆記之復合型別

2021-10-11 01:53:59 字數 4058 閱讀 2019

package main

import

"fmt"

func

main()

通過關鍵字new申請一塊指定型別的儲存空間並返回乙個對應型別的指標

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)}

package main

import

"fmt"

func

modify

(p *[5

]int

)func

main()

fmt.

println

(a)//將陣列位址傳遞過去

modify

(&a)

fmt.

println

(a)}

切片是一種引用型別,類似於結構體,共包含三種資料:指向slice的指標;容量;長度

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)

//容量擴充按照兩倍的容量擴充

}

copy()的使用

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]

}

map是乙個引用型別,因此對於map的所有修改都是保持一致的

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