夯實基礎:Go 語言函數聲明和參數傳遞
前文回顧
前面的文章主要介紹了 Go 語言中提供的常用容器,包括數組、切片,列表和字典等,還介紹了這些容器的遍歷方法。本文開始將會介紹 Go 語言中相關的函數和接口。
函數是一段封裝好、可重複使用、針對單一功能的代碼片段,它有利於程序的模塊化和提高代碼的可重用性。接口中定義了一系列將要被實現的方法,它代表了調用方和實現方共同遵守的協議,調用方通過接口瞭解可使用的方法而無需瞭解具體實現,實現方通過接口對外提供能使用的特性。
函數聲明和參數傳遞
函數首先要進行聲明,Golang 中函數聲明包括函數名、參數列表、返回參數列表,具體樣式如下所示:
func name(params)(return params){
function body
}
Golang 中函數以 func
標識,我們在之前的例子中聲明的 main
函數也是其中一種。函數名可以由字母、數字和下劃線組成,但是函數名第一位不能是數字,在同一個包內,函數名不可重名。一個函數如果希望被包外代碼訪問,函數名的首字母需要爲大寫。
參數列表中的每個參數由參數變量名和參數類型組成,它們將作爲函數的局部變量被使用。在參數列表中,多個參數之間通過逗號分隔。如果相鄰的參數的類型是相同的,則可以省略類型,如下例子所示:
func cal(a, b int) int {
return a + b;
}
在上面例子中,參數 a
和 b
都是 int
類型,因此可以省略 a
的類型說明。
Golang 中函數不僅支持多返回值,還支持對返回值進行命名,此時返回參數列表與參數列表類似,如下例子所示:
func div(dividend, divisor int)(quotient, remainder int) {
quotient = dividend/divisor
remainder = dividend%divisor
return
}
在上面正整數除法的函數中,我們對返回值分別命名爲 quotient
和 remainder
,於是我們可以直接在函數體內對他們進行賦值。需要注意的是,在使用命名返回值的函數中,在函數結束前我們需要顯式使用 return
語句進行返回。命名返回值和非命名返回值不能混合使用,兩種形式只能二選一,否則會出現編譯錯誤。
小結
本文主要介紹了函數聲明和參數傳遞。函數是基本的代碼塊,用於執行一個任務。Go 程序最少有個 main() 函數。通過函數來劃分不同功能,邏輯上每個函數執行的是指定的任務。函數聲明告訴了編譯器函數的名稱,返回類型,和參數。
Golang 中函數參數的傳遞方式都是值傳遞,在實際開發中爲了減少拷貝時產生的性能損耗,我們可以在參數中使用指針或者引用 (切片) 來減少內存複製的操作。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/_Cf7KspIPBTAHQay1qWF_Q