函數function
Go函數不支持嵌套、重載和默認參數
但支持以下特性:
無需聲明原型、不定長度變參、多返回值、命名返回值參數、匿名函數、閉包
定義函數使用關鍵字func,且左大括號不能另起一行
函數也可以作爲一種類型使用
閉包
defer
defer的執行方式類似其它語言中的析構函數,在函數體執行結束後按照調用順序的相反順序逐個執行
即使函數發生嚴重錯誤也會執行
支持匿名函數的調用
常用於資源管理、文件關閉、解鎖以及記錄時間等操作
通過與匿名函數配合可在return之後修改函數計算結果
如果函數體內某個變量作爲defer時匿名函數的參數,則在定義defer時即已經獲得了拷貝,否則則是引用某個變量的地址
Go沒有異常機制,但有panic/recover模式來處理錯誤
Panic可以在任何地方引發,但recover只有在defer調用的函數中有效