ostream作为函数返回值_Go语言入门必知教程-函数
函數是為了執行特定任務而存在于程序內的一組語句,函數接受輸入并返回輸出。
函數允許將常用的代碼塊提取出來成為單個組件。
使用最廣的Go函數是main(),每個獨立的Go程序都必須有個main函數。
創建函數
函數聲明以func關鍵字開頭,后跟函數名字、一對括號(),然后是函數代碼塊。
下面的示例有一個名為SimpleFunction的函數。它不接受任何參數,也不返回任何值。
結果:
Hello World
有參數的函數
數據可以通過參數傳遞給函數,一個參數就像一個變量。
參數在函數名后面的括號內指定,可以添加任意多個參數,需用逗號分隔它們。
下面的示例是一個帶有兩個int類型參數的函數。調用add()函數時,傳遞兩個整數值(例如20,30):
結果:
50
如果函數名以大寫字母開頭,該函數將導出到其他包中。如果函數名以小寫字母開頭,則不會將其導出到其他包,但可以在同一包中調用此函數。
有返回值的函數
在本例中,add()函數接受兩個整數參數,并返回一個名為total的整數值。
注意,當返回值聲明為函數簽名的一部分時,返回語句是必需的:
參數值和返回值的類型必須與函數簽名匹配,如果修改上面的程序并在參數中傳遞一些字符串值,那么程序將會拋出一個異常。
命名返回值
Golang允許命名函數的返回值,可以通過定義變量來命名返回值,這里在函數聲明中為函數的返回值定義了一個整數類型的變量area:
結果:
C:Golang>go run main.go
Parameter: 100
Area: 600
由于函數聲明了返回值,因此執行流程的最后一條邏輯語句必須是返回語句。
返回多個值
Golang中的函數可以返回多個值,這在許多場合下很有用。
下面的例子聲明有兩個返回值的函數:
注意:
- 函數名必須以字母開頭,并且可以有任意數量的字母和數字。
- 函數名不能以數字開頭。
- 函數名不能包含空格。
- 以大寫字母開頭的函數將導出到其他包中,以小寫字母開頭的函數則不會將導出到其他包中,但可以在同一包中調用。
- 如果一個函數名由多個單詞組成,那么第一個單詞后面的每個單詞都應該大寫如下:empName、EmpAddress等。
- 函數名區分大小寫(car、Car和CAR是三個不同的變量)。
將地址傳遞給函數
把變量的地址傳遞給函數,在函數體內部的使用解引用修改該變量的值:
結果:
C:Golang>go run main.go
Before: John 20
After : John Doe 25
匿名函數
匿名函數是沒有名字函數,沒有任何指定的標識符來引用它。匿名函數可以接受輸入并返回輸出,就像標準函數一樣。
匿名函數定義后賦給變量或立即調用。
定義匿名函數,并將其賦給變量:
定義接收參數的匿名函數:
定義接收參數和有返回值的匿名函數:
匿名函數常用于實現不需要命名且臨時使用的功能。
閉包函數
閉包是匿名函數的特殊用法,它是訪問在函數體外部定義的變量的匿名函數。
訪問函數體外定義的變量的匿名函數:
每次循環迭代中在函數體內訪問外部的變量的匿名函數:
高階函數
高階函數是以函數作為輸入參數或以函數作為輸出返回值的函數。
高階函數是對其他函數進行操作,將它們作為參數,也可以返回它們。
將函數作為參數傳遞給其他函數:
結果:
C:Golang>go run main.go
10
在上面的程序中,partialSum函數返回一個sum函數,該函數接受兩個int參數并返回一個int參數。
返回從其他函數返回的函數:
結果:
C:Golang>go run main.go
110
在上面的程序中,指定該函數的簽名返回兩個函數和一個整型值。
用戶定義的函數類型
Golang還支持定義自己的函數類型,使用type關鍵字。
上述程序的修改版本,功能類型如下:
總結
以上是生活随笔為你收集整理的ostream作为函数返回值_Go语言入门必知教程-函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lingo变量无限制版本_Quicker
- 下一篇: 语音控制 python_python有没