go語言語法記錄

2022-09-03 19:27:11 字數 2248 閱讀 7235

條件語句

func bounded (v int ) int else if v < 0 else 

}

迴圈沒有while

函式指標

package main

import "fmt"

func voidcopy (a int)

func voidref(a *int)

func main()

看到指標就應該思考到值傳遞還是引用傳遞?go語言函式只有值傳遞一種方式,所有引數都會被拷貝乙份,思考當傳遞的引數是乙個數值的時候,可以考慮使用指標獲取位址進行傳遞直接修改原資料,而如果傳遞的引數是物件等引用型別的話,那麼傳遞過來的本身就是引用位址!

陣列

var arr1 [5]int

arr2 := [3]int

arr3 := [...]int

var grid [4][5]int

// range 下列寫法可以獲得下標和值

for i, v := range arr3

// 定義必須得用,所以可以使用下劃線進行省略變數

for _, v := range arr3

陣列是值型別(使用的時候是拷貝)呼叫它的時候是值拷貝,一般不使用陣列而是使用切片

func printarray(arr [5]int) 

}// arr2 和 arr3、arr1不同,它不是[5] int 型別的

printarray(arr3)

printarray(arr1)

//printarray(arr2)

切片slice

arr := [...]int 

fmt.println("arr: ", arr )

fmt.println("arr[2:6]: ",arr[2:6])

fmt.println("arr[:6]: ",arr[:6])

fmt.println("arr[2:]: ",arr[2:])

fmt.println("arr[:]: ",arr[:])

// output

arr: [0 1 2 3 4 5 6 7 8 9]

arr[2:6]: [2 3 4 5]

arr[:6]: [0 1 2 3 4 5]

arr[2:]: [2 3 4 5 6 7 8 9]

arr[:]: [0 1 2 3 4 5 6 7 8 9]

slice本身沒有資料,是對底層array的乙個view

func main() 

s := arr[:]

s[0] = 20

s[3] = 200

fmt.println(arr)

}// [20 1 2 200 4 5 6 7 8 9]

reslice

arr := [...]int 

fmt.println(arr)

s := arr[:5]

fmt.println(s)

s = s[:2]

fmt.println(s)

// output

// [0 1 2 3 4 5 6 7 8 9]

// [0 1 2 3 4]

// [0 1]

超出切片的下標會如何顯示?

arr := [...]int 

fmt.println(arr)

s := arr[2:5]

fmt.println(s)

s1 := s[3:5]

fmt.println(s1)

// output

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

[2 3 4]

[5 6]

*/

sliceptr,len,cap分別第乙個,長度,向後的全部元素

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

容器面向介面

go語言語法基礎

1.go標記 go 程式可以由多個標記組成,可以是關鍵字,識別符號,常量,字串,符號 如 fmt.println hello world 2.行分隔符 在 go 程式中,一行代表乙個語句結束。3.注釋 注釋不會被編譯,每乙個包應該有相關注釋。單行注釋 多行注釋 4.識別符號 識別符號用來命名變數 型...

go語言語法練習例項

package main import fmt 定義grandpa結構體 type grandpa struct 定義parents結構體 type parents struct 定義son結構體 type son struct say函式 func say n int,b int func mai...

C語言語法

printf 01f n double 2 1 printf 02f n double 2 1 保留兩位小數 陣列賦值 include memset al,0,sizeof al 輸入浮點數 while scanf lf n eof 字串比較 include char a 11 1234567890...