Go語言入門教程(十)之函數
- 2019 年 10 月 9 日
- 筆記
Hello 各位小夥伴大家好,我是小棧君,假期一眨眼就過去了。不知道大家玩的是否開心呢?
上次我們講到了關於Go語言的流程式控制制,小棧君也希望小夥伴跟著小棧君一步一個腳印的敲一下程式碼,相互進步。本期我們要分享的Go語言系列之函數。
一、什麼是函數?
函數是指一段在一起的、可以做某一件事兒的程式。也叫做子程式、(OOP中)方法。
一個較大的程式一般應分為若干個程式塊,每一個模組用來實現一個特定的功能。所有的高級語言中都有子程式這個概念,用子程式實現模組的功能。
在C語言中,子程式的作用是由一個主函數和若干個函數構成。由主函數調用其他函數,其他函數也可以互相調用。同一個函數可以被一個或多個函數調用任意多次。
在程式設計中,常將一些常用的功能模組編寫成函數,放在函數庫中供公共選用。要善於利用函數,以減少重複編寫程式段的工作量
二、函數之函數定義
所以綜上所述我們可以知道函數構成程式碼執行的邏輯結構。在Go語言中,函數的基本組成為:關鍵字func、函數名、參數列表、返回值、函數體和返回語句。
所以函數的通用格式如下:
函數定義說明:
func:函數由關鍵字 func 開始聲明
funcName:函數名稱,根據約定,函數名首字母小寫即為private,大寫即為public ,注意之前小棧君提醒過各位,在go語言中是區分大小寫的。所以這裡的add是僅本類中使用。
參數列表:函數可以有0個或多個參數,參數格式為:變數名 類型,如果有多個參數通過逗號分隔,不支援默認參數
返回類型:
① 上面返回值聲明了兩個變數名d和e、f、err(命名返回參數),這個不是必須,可以只有類型沒有變數名
② 如果只有一個返回值且不聲明返回值變數,那麼你可以省略,包括返回值的括弧
③ 如果沒有返回值,那麼就直接省略最後的返回資訊
④ 如果有返回值, 那麼必須在函數的內部添加return語句
三、函數之自定義函數
在所有的編程中我們都避免不了自定義函數也稱之為方法。以此來確保我們業務的順利進行,自定義函數的好處就是可以復用,避免程式碼臃腫,邏輯混亂,提高程式碼的閱讀性。
所以在go語言的自定義函數中我們可以分為以下幾個種類,無參無返回值、有參無返回值、無參有返回值、有參有返回值這幾種。
無參無返回值
func Test() { //無參無返回值函數定義 fmt.Println("hello i am itCarry") } func main() { Test() //無參無返回值函數調用 }
有參無返回值
func Test01(a int, b int) { //方式1 fmt.Printf("a = %d, b = %dn", a, b) } func Test02(a, b int) { //方式2, v1, v2都是int類型 fmt.Printf("a = %d, b = %dn", a, b) } func main() { Test01(10, 20) //函數調用 Test02(11, 22) //函數調用 }
不定參數列表
所謂的不定參數列表就是指傳參的個數不確定,有可能是一個或多個,所以為了滿足這點我們需要將傳參設定為不定參數,和其他程式語言一樣,我們這裡用三個點表示(即…),記住要用英文的哦。
知識點:形如…type格式的類型只能作為函數的參數類型存在,並且必須是最後一個參數
func Test(args …int) {
for _, n := range args { //遍歷參數列表
fmt.Println(n)
}
}
func main() {
//函數調用,可傳0到多個參數
Test()
Test(1)
Test(1, 2, 3, 4)
}
四、函數之不定參數傳遞
// 定義函數 一 func MyFunc01(args ...int) { fmt.Println("MyFunc01") for _, n := range args { //遍歷參數列表 fmt.Println(n) } } // 定義函數 二 func MyFunc02(args ...int) { fmt.Println("MyFunc02") for _, n := range args { //遍歷參數列表 fmt.Println(n) } } // 定義函數 三 func Test(args ...int) { MyFunc01(args...) //按原樣傳遞, Test()的參數原封不動傳遞給MyFunc01 MyFunc02(args[1:]...) //Test()參數列表中,第1個參數及以後的參數傳遞給MyFunc02 // PS: 這裡運用了一個之後的知識點 就是關於Go語言的切片 } // 調用函數 三 func main() { Test(1, 2, 3) //函數調用 }
所以我們也是可以看到函數中可以調用函數,構成新的函數。所以我們只要妥善處理好函數之間的關係我們就可以構建出高效率、高品質、高可用的程式碼啦。
好啦,今天的分享就到這裡了,對於這一方面還需要各位小夥伴下來後好好琢磨一下。
▼
往期精彩回顧
▼
Go語言入門教程(一)
Go語言入門教程(二)
Go語言入門教程(三)
Go語言系列教程(四)
Go語言系列教程(五)
Go語言系列教程(六)
這裡每天會分享包含java,go,Python,大數據,人工智慧的相關乾貨,我們一起提高,一起進步。我是小棧君,我們明天再見,拜了個拜。