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

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

上次咱們講到了關於Go語言的流程控制,小棧君也但願小夥伴跟着小棧君一步一個腳印的敲一下代碼,相互進步。本期咱們要分享的Go語言系列之函數。編程

1、什麼是函數?編程語言

函數是指一段在一塊兒的、能夠作某一件事兒的程序。也叫作子程序、(OOP中)方法。函數

一個較大的程序通常應分爲若干個程序塊,每個模塊用來實現一個特定的功能。全部的高級語言中都有子程序這個概念,用子程序實現模塊的功能。大數據

在C語言中,子程序的做用是由一個主函數和若干個函數構成。由主函數調用其餘函數,其餘函數也能夠互相調用。同一個函數能夠被一個或多個函數調用任意屢次。人工智能

在程序設計中,常將一些經常使用的功能模塊編寫成函數,放在函數庫中供公共選用。要善於利用函數,以減小重複編寫程序段的工做量設計

2、函數之函數定義code

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

因此函數的通用格式以下:教程

file

函數定義說明:

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,大數據,人工智能的相關乾貨,咱們一塊兒提升,一塊兒進步。我是小棧君,咱們明天再見,拜了個拜。

file

相關文章
相關標籤/搜索