夯實基礎:Go 語言函數聲明和參數傳遞

前文回顧

前面的文章主要介紹了 Go 語言中提供的常用容器,包括數組、切片,列表和字典等,還介紹了這些容器的遍歷方法。本文開始將會介紹 Go 語言中相關的函數和接口。

函數是一段封裝好、可重複使用、針對單一功能的代碼片段,它有利於程序的模塊化和提高代碼的可重用性。接口中定義了一系列將要被實現的方法,它代表了調用方和實現方共同遵守的協議,調用方通過接口瞭解可使用的方法而無需瞭解具體實現,實現方通過接口對外提供能使用的特性。

函數聲明和參數傳遞

函數首先要進行聲明,Golang 中函數聲明包括函數名、參數列表、返回參數列表,具體樣式如下所示:

func name(params)(return params){
 function body
}

Golang 中函數以 func 標識,我們在之前的例子中聲明的 main 函數也是其中一種。函數名可以由字母、數字和下劃線組成,但是函數名第一位不能是數字,在同一個包內,函數名不可重名。一個函數如果希望被包外代碼訪問,函數名的首字母需要爲大寫。

參數列表中的每個參數由參數變量名和參數類型組成,它們將作爲函數的局部變量被使用。在參數列表中,多個參數之間通過逗號分隔。如果相鄰的參數的類型是相同的,則可以省略類型,如下例子所示:

func cal(a, b int) int {
 return a + b;
}

在上面例子中,參數 ab 都是 int 類型,因此可以省略 a 的類型說明。

Golang 中函數不僅支持多返回值,還支持對返回值進行命名,此時返回參數列表與參數列表類似,如下例子所示:

func div(dividend, divisor int)(quotient, remainder int) {
 quotient = dividend/divisor
 remainder = dividend%divisor
 return
}

在上面正整數除法的函數中,我們對返回值分別命名爲 quotientremainder ,於是我們可以直接在函數體內對他們進行賦值。需要注意的是,在使用命名返回值的函數中,在函數結束前我們需要顯式使用 return 語句進行返回。命名返回值和非命名返回值不能混合使用,兩種形式只能二選一,否則會出現編譯錯誤。

小結

本文主要介紹了函數聲明和參數傳遞。函數是基本的代碼塊,用於執行一個任務。Go 程序最少有個 main() 函數。通過函數來劃分不同功能,邏輯上每個函數執行的是指定的任務。函數聲明告訴了編譯器函數的名稱,返回類型,和參數。

Golang 中函數參數的傳遞方式都是值傳遞,在實際開發中爲了減少拷貝時產生的性能損耗,我們可以在參數中使用指針或者引用 (切片) 來減少內存複製的操作。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/_Cf7KspIPBTAHQay1qWF_Q