Go 函式 學習筆記
函式function:
Go 函式 不支援 巢狀、過載和預設引數
但支援以下特性:無需宣告原型、不定長度變參、多返回值、命名返回值引數 匿名函式、閉包
定義函式使用關鍵字 func,且左大括號不能另起一行
函式也可以作為一種型別使用
defer
- defer的執行方式類似其它語言中的解構函式,在函式體執行結束後按照呼叫順序的相反順序逐個執行,即使函式發生嚴重錯誤也會執行。
- 支援匿名函式的呼叫
- 常用於資源清理、檔案關閉、解鎖以及記錄時間等操作
- 通過與匿名函式配合可在return之後修改函式計算結果
- 如果函式體內某個變數作為defer時匿名函式的引數,則在定義defer
時即已經獲得了拷貝,否則則是引用某個變數的地址
package main
import (
"fmt"
)
func main() {
defer fmt.Println(1111)
defer fmt.Println(2222)
// fmt.Println("-------------------")
for i := 0; i < 3; i++ {
defer fmt.Println(i)
}
// fmt.Println("-------------------")
// 如果函式體內某個變數作為defer時匿名函式的引數,則在定義defer時即已經獲得了拷貝,否則則是引用某個變數的地址
for i := 4; i < 7; i++ {
defer f(i)
}
// fmt.Println("-------------------")
for i := 7; i < 10; i++ { //閉包
defer func() {
fmt.Println(i)
}()
}
// fmt.Println("-------------------")
}
func f(a int) {
fmt.Println(a)
}
輸出結果:
panic/recover
Go 沒有異常機制,但有 panic/recover 模式來處理錯誤
Panic 可以在任何地方引發,但recover只有在defer呼叫的函式中有效
package main
import (
"fmt"
)
func main() {
A()
B()
C()
}
func A() {
fmt.Println("func A")
}
func B() {
defer func() {
if err := recover(); err != nil {
fmt.Println("recover in b")
}
}()
panic("panic in b")
}
func C() {
fmt.Println("func C")
}
輸出結果:
本文參考整理自:《Go 程式設計基礎》
個人微信公眾號:
作者:jiankunking 出處:http://blog.csdn.net/jiankunking
相關文章
- 【Go】Go語言學習筆記-2-函式Go筆記函式
- 函式 - Go 學習記錄函式Go
- async函式學習筆記。函式筆記
- 分析函式(學習筆記)函式筆記
- 生成函式 學習筆記函式筆記
- TS學習筆記(四):函式筆記函式
- JavaScript學習筆記 - 原生函式JavaScript筆記函式
- Golang學習筆記-1.6 函式Golang筆記函式
- Oracle學習筆記(6)——函式Oracle筆記函式
- LoadRunner函式學習筆記函式筆記
- MYSQL學習筆記14: 函式MySql筆記函式
- 深度學習——loss函式的學習筆記深度學習函式筆記
- go 學習筆記之學習函數語言程式設計前不要忘了函式基礎Go筆記函數程式設計函式
- Go 學習筆記Go筆記
- python學習筆記(六)——函式Python筆記函式
- OpenCV學習筆記(4)——mixChannels函式OpenCV筆記函式
- OpenCV學習筆記(5)——normalize函式OpenCV筆記ORM函式
- Flutter學習筆記(4)--Dart函式Flutter筆記Dart函式
- js純函式學習筆記(一)JS函式筆記
- C++學習筆記(二)——函式C++筆記函式
- c語言學習筆記===函式C語言筆記函式
- 【C#學習筆記】函式呼叫C#筆記函式
- oracle學習筆記8: 分析函式Oracle筆記函式
- 學習筆記-----一時間函式筆記函式
- MYSQL學習筆記7: 聚合函式MySql筆記函式
- go 學習筆記之解讀什麼是defer延遲函式Go筆記函式
- go語言學習-函式Go函式
- PHP 第八週函式學習筆記PHP函式筆記
- 學習筆記:javascript中的Generator函式筆記JavaScript函式
- JavaScript學習筆記(七)—— 再說函式JavaScript筆記函式
- pandas之常用基本函式學習筆記函式筆記
- 【C#學習筆記】函式過載C#筆記函式
- Erlang學習筆記(四)模組與函式筆記函式
- c++學習筆記 -- 建構函式C++筆記函式
- MATLAB學習筆記—多型函式Matlab筆記多型函式
- MYSQL學習筆記15: 數值函式MySql筆記函式
- 工作學習筆記(三)to_char函式筆記函式
- GO 方法學習筆記Go筆記