條件語句
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]
*/
slice
有ptr
,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...