Go語言入門教程(十)之函數

Hello 各位小伙伴大家好,我是小棧君,假期一眨眼就過去了。不知道大家玩的是否開心呢?

上次我們講到了關于Go語言的流程控制,小棧君也希望小伙伴跟著小棧君一步一個腳印的敲一下代碼,相互進步。本期我們要分享的Go語言系列之函數。

一、什么是函數?

函數是指一段在一起的、可以做某一件事兒的程序。也叫做子程序、(OOP中)方法。

一個較大的程序一般應分為若干個程序塊,每一個模塊用來實現一個特定的功能。所有的高級語言中都有子程序這個概念,用子程序實現模塊的功能。

在C語言中,子程序的作用是由一個主函數和若干個函數構成。由主函數調用其他函數,其他函數也可以互相調用。同一個函數可以被一個或多個函數調用任意多次。

在程序設計中,常將一些常用的功能模塊編寫成函數,放在函數庫中供公共選用。要善于利用函數,以減少重復編寫程序段的工作量

二、函數之函數定義

所以綜上所述我們可以知道函數構成代碼執行的邏輯結構。在Go語言中,函數的基本組成為:關鍵字func、函數名、參數列表、返回值、函數體和返回語句。

所以函數的通用格式如下:

file

函數定義說明:

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 = %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)
}

四、函數之不定參數傳遞

// 定義函數 一
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,大數據,人工智能的相關干貨,我們一起提高,一起進步。我是小棧君,我們明天再見,拜了個拜。

file

posted @ 2019-10-09 13:50 it_carry 閱讀(...) 評論(...) 編輯 收藏
七乐彩2011年走势图南方双彩