Go語言學習筆記 七

2022-08-16 19:09:11 字數 2206 閱讀 7957

注意:有些時候我會省略main函式

1: func functionnanme([parametername type]) [returntype]  // 其中引數列表和返回值列表是可選

兩個數相加

1: func add(a int, b int) int
5: func main()

多返回值

1: func calc(a, b int)(int, int)
6: func main()

換種寫法

1: func calc(a, b int)(sum int, sub int)

可變引數(可以傳引數,可以不傳,也可以傳0個或多個引數)

1: func calc_v1(b ...int) int
8: func main()

defer語句

1: func calc_v1(b ...int)(sum int, sub int)

幾個例子:

1: func test_defer()

輸出結果

1: >>> alex
2: >>> hello

多個defer 遵循棧的特性:先進後出

1: func test_defer()

輸出結果

1: >>> hello_4
2: >>> hello_3
3: >>> hello_2
4: >>> hello_1
1: func test_defer_2()
5: 	fmt.println("start...\n")
6: }

列印結果

1: >>> start...
2: >>> hello,3
3: >>> hello,2
4: >>> hello,1
5: >>> hello,0
1: func test_defer_3()

輸出

1: >>> i=1000
2: >>> defer i=0

常用內建函式:

1: close:主要用來關閉channel
2: len:用來求長度,比如string,array,slice,map,channel
3: new:用來分配記憶體,主要用來分配值型別,比如int,struct。返回的是指標
4: make:用來分配記憶體,主要用來分配引用型別,比如chan,map,slice
6: panic和recover:用來做錯誤處理

幾個小練習:

質數判斷:

1.求1到100之內的所有質數,並列印到螢幕上

1: func justfy(n int) bool
6: 	}
7: 	return true
8: }
9: func problem1 ()
14: 	}
15: }

2.列印出所有的"水仙花數",所謂"水仙花數"是指乙個三位數,其各位數字立方和等於該數本身。例如:153是乙個"水仙花數",因為153=1的三次方+5的三次方+3的三次方。求100到1000之間的所有水仙花數。

1: func is_narcissus(n int) bool
9: 	return false
10: }
11: func number_array()
16: 	}
17: }

3.輸入一行字元,分別統計出其中英文本母,空格,數字和其他字元的個數。

1: func statistics_str (str string) ()
16: 	}
17: 	fmt.printf("countchar=%d\ncountnum=%d\ncountspace=%d\ncountother=%d\n", countchar, countnum, countspace, countother)
18: }

GO語言學習筆記(七 function)

函式function go函式不支援巢狀 過載和預設引數 但支援以下特性 無需宣告原型 不定長度變參 多返回值 命名返回值引數 匿名函式 閉包 定義函式使用關鍵字func,且左大括號不能另起一行 函式也可以作為一種型別使用 閉包 defer的執行方式類似其它語言中的析構函式,在函式體執行結束後按照呼...

go語言學習筆記

type info struct func main fmt.println info1 data,json.marshal info1 fmt.println string data 輸出 這裡要特別注意的是 json 冒號後面和雙引號之間千萬不要有空格!被坑慘了 go語言 import的包的前面...

Go語言 學習筆記

import 下劃線 如 import hello imp 的作用 當匯入乙個包時,該包下的檔案裡所有init 函式都會被執行,然而,有些時候我們並不需要把整個包都匯入進來,僅僅是是希望它執行init 函式而已。這個時候就可以使用 import 引用該包。即使用 import 包路徑 只是引用該包,...