go語言函式function
go函式不支援巢狀、過載和預設引數
但支援以下特性:
無需宣告原型、不定長度引數、多返回值、命名返回值引數、匿名函式、閉包
定義函式使用關鍵字func,且左大括號不能另起一行
函式也可以作為一種型別使用
不定引數
不定引數的傳遞:
任意型別的不定引數:
如果你希望傳任意型別的不定引數,可以指定型別為inte***ce{},下面是go語言標準庫中fmt.printf()的函式原型:
func printf(format string, args ...inte***ce{}){
//...
}
用inte***ce{}傳遞任意型別資料是go語言的管理用法。使用inte***ce{}仍然是型別安全的。
defer的執行方式類似其他語言的析構函式,在函式體執行結束後按照呼叫順序的相反順序逐個呼叫
即使函式發生嚴重錯誤也會執行
支援匿名函式的呼叫
常用於資源清理,檔案關閉,解鎖以及記錄時間等操作
通過與匿名函式配合可以在return之後修改函式計算結果
如果函式體內某個變數作為defer時匿名函式的引數,則在定義defer時即已經獲得了拷貝,否則則是引用某個變數的位址
go沒有異常機制,但有panic/recover模式來處理錯誤
panic可以在任何地方引發,但recover只有在defer呼叫的函式中有效
函式定義
go語言函式定義格式如下:
函式定**析:func function_name([
(parameter list])
[return_types
]
[parameter list])
[return_types
]
func:函式由func開始宣告
function_name:函式名稱,函式名稱和引數列表一起構成了函式簽名;
parameter list:引數列表,引數就像乙個佔位符,當函式被呼叫時,可以將值傳遞給引數,這個值被稱為實際引數。引數列表指定的是引數型別、順序、及引數個數。引數是可選的,也就是函式也可以不包含引數。
return_types:返回型別,函式返回以列值。return_types是該列值的資料型別。有些功能不需要返回值,這種情況下reutrn_types不是必須的;
函式體:函式定義的**集合
函式呼叫
當建立函式時,定義了函式需要做什麼,通過呼叫該函式執行指定任務。
呼叫函式,向函式傳遞引數,並返回值。
函式返回多個值
go函式可以返回多個值。
函式引數
函式如果使用引數,該變數可稱為函式的形參
形參就像定義在函式體內的區域性變數
呼叫函式,可以通過兩種方式來傳遞引數:
函式用法
函式作為值:
go 語言可以很靈活的建立函式,並作為值使用。以下例項中我們在定義的函式中初始化乙個變數,該函式僅僅是為了使用內建函式 math.sqrt() ,例項為:
以上**執行結果為:package
mainmain
import
("fmt"
"math"
)func main
()/* 使用函式 */
fmt.
println
(getsquareroot(9
))}
import
("fmt"
"math"
)func main
()/* 使用函式 */
fmt.
println
(getsquareroot(9
))}
3
閉包go 語言支援匿名函式,可作為閉包。匿名函式是乙個"內聯"語句或表示式。匿名函式的優越性在於可以直接使用函式內的變數,不必申明。
以下例項中,我們建立了函式 getsequence() ,返回另外乙個函式。該函式的目的是在閉包中遞增 i 變數,**如下:
package main
import "fmt"
func getsequence() func() int
}func main()
以上**執行結果為:
123
12
方法:
go 語言中同時有函式和方法。乙個方法就是乙個包含了接受者的函式,接受者可以是命名型別或者結構體型別的乙個值或者是乙個指標。所有給定型別的方法屬於該型別的方法集。語法格式如下:
func (variable_name variable_data_type) function_name() [return_type]
下面定義乙個結構體型別和該型別的乙個方法:
package main
import (
"fmt"
)/* 定義函式 */
type circle struct
func main()
//該 method 屬於 circle 型別物件中的方法
func (c circle) getarea() float64
以上**執行結果為:
area of circle(c1) = 314
本文參考 Go語言 函式
函式是結構化程式設計的最小模組單元,使用關鍵字 func 定義函式。go語言定義函式的一些特點總結如下 無需前置宣告 不支援命名巢狀定義 不支援同名函式過載 不支援預設引數 支援不定長變參 支援多返回值 支援命名返回值 支援匿名函式和閉包 函式屬於第一類物件,具備相同簽名 引數及返回值型別 的視為同...
Go 語言函式
func function name parameter list return types parameter list 引數列表,引數就像乙個佔位符,當函式被呼叫時,你可以將值傳遞給引數,這個值被稱為實際引數。引數列表指定的是引數型別 順序 及引數個數。引數是可選的,也就是說函式也可以不包含引數...
Go語言函式
和c語言一樣,go語言也有函式,在go中函式用func關鍵字標識,其定義格式如下 func 函式名 引數1 引數2 返回值1 返回值2 比較有特色的地方是go語言可以返回多個返回值。package main import fmt func intsum1 x,y int int func intsu...