go語言基礎教程2

2022-07-08 22:00:19 字數 1567 閱讀 4006

array

陣列宣告--var arr [10]int,array由[n]定義。n表示陣列大小,type表示陣列型別

宣告且初始化--arr := [3]int或者不寫大小var arr := [...]int或者var arr =  [3]int,如果不寫大小可以用三個點來表示,go會自動識別,var arr[3]int預設是初始化為0。

ps:記住:=和=之間的區別,如果是:=不需要var,如果是=需要var

二維陣列初始化a := [2][2]int, [2]int },a := [2][2]int, [...]int },a := [2][2]int, }預設裡面的型別就是int

陣列同樣是值型別的:將乙個陣列賦值給另乙個陣列,會複製所有的元素。尤其是當向函式內傳遞乙個陣列的時候,它會獲得乙個陣列的副本,而不是陣列的指標。

slice

slice 與array 接近,但是在新的元素加入的時候可以增加長度。slice 總是指向底層的乙個array。slice 是乙個指向array 的指標,這是其與array 不同的地方;slice 是引用型別, 這意味著當賦值某個slice 到另外乙個變數,兩個引用會指向同乙個array。例如,如果乙個函式需要乙個slice 引數,在其內對slice 元素的修改也會體現在函式呼叫者中,這和傳遞底層的array 指標類似。

slice 總是與乙個固定長度的array 成對出現。其影響slice 的容量和長度

arr := [10]int

slice := arr[0:5]

fmt.printf("slice1 len:%d, slice1 cap:%d\n",len(slice1),cap(slice1))

fmt.printf("slice len:%d, slice cap:%d\n",len(slice),cap(slice))

fmt.printf("arr[0]=%d,arr[1]=%d,arr[2]=%d,arr[3]=%d,arr[6]=%d\n",arr[0],arr[1],arr[2],arr[3],arr[6])

arr[6] = 5,說明slice和slice1都指向了arr。更改slice和slice1將更改arr。

make

可以通過make來建立乙個長度為n的slice--sl := make(int,6)

map

1

package main

23 import "fmt"45

func main()

1213 fmt.printf("%d\n", monthdays["dec"])

14 year := 0

15 for month,days :=range monthdays

19 fmt.printf("numbers of days in a year: %d\n", year)

20 var value int

21var ok bool

22value, ok = monthdays["jan"] //value將取到值,而ok則判斷值是否真的取到

23if ok == true

26 }

Go語言基礎教程 for迴圈語句

程式的流程控制結構一共有三種 順序結構,選擇結構,迴圈結構。順序結構 從上向下逐行的執行 選擇結構 條件滿足,某些 才會被執行。0 1次 if語句,switch語句 迴圈結構 條件滿足,某些 會被反覆的多次執行。0 n次 for語句 迴圈語句表示條件滿足,可以反覆的執行某段 for是唯一的迴圈語句。...

Go語言基礎教程 for迴圈語句

程式的流程控制結構一共有三種 順序結構,選擇結構,迴圈結構。順序結構 從上向下逐行的執行 選擇結構 條件滿足,某些 才會被執行。0 1次 if語句,switch語句 迴圈結構 條件滿足,某些 會被反覆的多次執行。0 n次 for語句 迴圈語句表示條件滿足,可以反覆的執行某段 for是唯一的迴圈語句。...

GO語言基礎教程 流程控制

package main import fmt func main fmt.println x,y 其次輸出2,2 fmt.println x,y 最後輸出1,2 var a int a xx if a 1else if a 2else 通過上邊的程式碼不難發現其實go語言的if寫法和別的程式語言幾...