Golang學習筆記-1.6 函式
本文系第六篇Golang語言學習教程
宣告函式
語法
func name(parametername type) returntype {
//函式體(具體實現的功能)
}
函式宣告包括:
函式名name
:自定義的函式名
形式引數列表()
:()中定義,描述了函式的引數名以及引數型別
返回值列表rerurntype
:描述了函式返回值的變數以及型別
函式體{}
:具體實現功能的程式碼
函式宣告釋義
函式的宣告以關鍵詞func
開始,後面緊跟自己定義的函式名name(函式名)
,
函式的引數列表定義在()
之間,
返回值的型別定義在returntype
(返回值列表)處,
包含在{}
之間的就是函式體。
注:宣告一個引數的語法為引數名 引數型別,宣告多個引數採用(引數名 引數型別, 引數名 引數型別)的形式。
函式中引數列表和返回值並非必須的,是可以省略的。
例:以下函式宣告也是有效的
func testfunc(){
//此函式不需要輸入引數,且沒有返回值
}
示例函式
//平分糖果的函式,輸入引數是總共的糖果數量和人的數量,兩者的商為每人分的數量,作為返回值
func Candy(total int, people int) int { //引數型別相同時可寫成(total, people int)
var avg = total / people //平均值 = 總數 / 人數
return avg //返回平均值
}
上述有兩個整型的輸入,total
和people
,返回值為avg
,也是整數型別。
現在已經定義了一個函式,需要在程式中呼叫這個函式。呼叫函式的語法為:name(parametername)
,如下:
Candy(20, 5)
完成了函式的宣告與呼叫後,就可以寫出一個完整的程式,將每個人分到的糖果輸出:
package main
import "fmt"
//平分糖果的函式,輸入引數是總共的糖果數量和人的數量,兩者的商為每人分的數量,作為返回值
func Candy(total int, people int) int { //引數型別相同時可寫成(total, people int)
var avg = total / people
return avg
}
func main(){
avg := Candy(20, 5)
fmt.Println("Everyone can get", avg)
}
以上程式執行結果為:
Everyone can get 4
多返回值
Go語言支援一個函式有多個返回值。
例:
package main
import (
"fmt"
)
//求長方形周長和麵積的函式,輸出引數是長和寬,周長是長和寬之和的兩倍,面積是長和寬的乘積
func rectangle(length,width int)(int, int) {
var perimeter= (length + width) * 2
var area= length * width
return perimeter, area
}
func main (){
perimeter, area := rectangle(20, 5)
fmt.Println("the perimeter is", perimeter, "and the area is", area)
}
如果一個函式有多個返回值,必須用()括起來,以上程式中兩個返回值分別為perimeter
和area
。
以上程式執行結果為:
the perimeter is 50 and the area is 100
若只想呼叫一個返回值,則將另一返回值用_
代替:perimeter, _ := rectangle(20, 5)
命名返回值
從函式中可以命名一個返回值,一旦命名了返回值,可以認為這些值在函式的第一行就被宣告變數,在函式體中不需要宣告。
上面的rectangle
函式可以寫成:
func rectangle(length,width int)(perimeter, area int) { //在第一行中命名返回值,宣告變數
perimeter= (length + width) * 2
area= length * width
return //不需要指定返回值,預設返回 perimeter, area
}
仔細對比上面兩種寫法發現,命名返回值在 rerurntype
返回值列表段宣告瞭返回值,在函式體中不需要宣告變數,直接等於值即可。
以上為學習Golang函式篇
相關文章
- 我的 golang 學習筆記系列二:golang的函式運用Golang筆記函式
- async函式學習筆記。函式筆記
- Go 函式 學習筆記Go函式筆記
- 分析函式(學習筆記)函式筆記
- 生成函式 學習筆記函式筆記
- golang 學習筆記Golang筆記
- TS學習筆記(四):函式筆記函式
- JavaScript學習筆記 - 原生函式JavaScript筆記函式
- Oracle學習筆記(6)——函式Oracle筆記函式
- LoadRunner函式學習筆記函式筆記
- MYSQL學習筆記14: 函式MySql筆記函式
- 深度學習——loss函式的學習筆記深度學習函式筆記
- 【學習筆記】Golang 切片筆記Golang
- GOLang 學習筆記(一)Golang筆記
- goLang學習筆記(三)Golang筆記
- goLang學習筆記(四)Golang筆記
- goLang學習筆記(一)Golang筆記
- goLang學習筆記(二)Golang筆記
- golang 學習筆記1Golang筆記
- python學習筆記(六)——函式Python筆記函式
- OpenCV學習筆記(4)——mixChannels函式OpenCV筆記函式
- OpenCV學習筆記(5)——normalize函式OpenCV筆記ORM函式
- Flutter學習筆記(4)--Dart函式Flutter筆記Dart函式
- js純函式學習筆記(一)JS函式筆記
- C++學習筆記(二)——函式C++筆記函式
- c語言學習筆記===函式C語言筆記函式
- 【C#學習筆記】函式呼叫C#筆記函式
- oracle學習筆記8: 分析函式Oracle筆記函式
- 學習筆記-----一時間函式筆記函式
- MYSQL學習筆記7: 聚合函式MySql筆記函式
- 尹成學院golang學習快速筆記(2)表示式Golang筆記
- PHP 第八週函式學習筆記PHP函式筆記
- 學習筆記:javascript中的Generator函式筆記JavaScript函式
- JavaScript學習筆記(七)—— 再說函式JavaScript筆記函式
- pandas之常用基本函式學習筆記函式筆記
- 【C#學習筆記】函式過載C#筆記函式
- Erlang學習筆記(四)模組與函式筆記函式
- c++學習筆記 -- 建構函式C++筆記函式