Hello 各位小夥伴你們好,我是小棧君,假期一眨眼就過去了。不知道你們玩的是否開心呢?java
上次咱們講到了關於Go語言的流程控制,小棧君也但願小夥伴跟着小棧君一步一個腳印的敲一下代碼,相互進步。本期咱們要分享的Go語言系列之函數。編程
1、什麼是函數?編程語言
函數是指一段在一塊兒的、能夠作某一件事兒的程序。也叫作子程序、(OOP中)方法。函數
一個較大的程序通常應分爲若干個程序塊,每個模塊用來實現一個特定的功能。全部的高級語言中都有子程序這個概念,用子程序實現模塊的功能。大數據
在C語言中,子程序的做用是由一個主函數和若干個函數構成。由主函數調用其餘函數,其餘函數也能夠互相調用。同一個函數能夠被一個或多個函數調用任意屢次。人工智能
在程序設計中,常將一些經常使用的功能模塊編寫成函數,放在函數庫中供公共選用。要善於利用函數,以減小重複編寫程序段的工做量設計
2、函數之函數定義code
因此綜上所述咱們能夠知道函數構成代碼執行的邏輯結構。在Go語言中,函數的基本組成爲:關鍵字func、函數名、參數列表、返回值、函數體和返回語句。blog
因此函數的通用格式以下:教程
函數定義說明:
func:函數由關鍵字 func 開始聲明
funcName:函數名稱,根據約定,函數名首字母小寫即爲private,大寫即爲public ,注意以前小棧君提醒過各位,在go語言中是區分大小寫的。因此這裏的add是僅本類中使用。
參數列表:函數能夠有0個或多個參數,參數格式爲:變量名 類型,若是有多個參數經過逗號分隔,不支持默認參數
返回類型:
① 上面返回值聲明瞭兩個變量名d和e、f、err(命名返回參數),這個不是必須,能夠只有類型沒有變量名
② 若是隻有一個返回值且不聲明返回值變量,那麼你能夠省略,包括返回值的括號
③ 若是沒有返回值,那麼就直接省略最後的返回信息
④ 若是有返回值, 那麼必須在函數的內部添加return語句
3、函數之自定義函數
在全部的編程中咱們都避免不了自定義函數也稱之爲方法。以此來確保咱們業務的順利進行,自定義函數的好處就是能夠複用,避免代碼臃腫,邏輯混亂,提升代碼的閱讀性。
因此在go語言的自定義函數中咱們能夠分爲如下幾個種類,無參無返回值、有參無返回值、無參有返回值、有參有返回值這幾種。
無參無返回值
func Test() { //無參無返回值函數定義 fmt.Println("hello i am itCarry") } func main() { Test() //無參無返回值函數調用 }
有參無返回值
func Test01(a int, b int) { //方式1 fmt.Printf("a = %d, b = %d\n", a, b) } func Test02(a, b int) { //方式2, v1, v2都是int類型 fmt.Printf("a = %d, b = %d\n", 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)
}
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,大數據,人工智能的相關乾貨,咱們一塊兒提升,一塊兒進步。我是小棧君,咱們明天再見,拜了個拜。