Hello 各位小伙伴大家好,我是小堆疊君,假期一眨眼就過去了,不知道大家玩的是否開心呢?
上次我們講到了關于Go語言的流程控制,小堆疊君也希望小伙伴跟著小堆疊君一步一個腳印的敲一下代碼,相互進步,本期我們要分享的Go語言系列之函式,
一、什么是函式?
函式是指一段在一起的、可以做某一件事兒的程式,也叫做子程式、(OOP中)方法,
一個較大的程式一般應分為若干個程式塊,每一個模塊用來實作一個特定的功能,所有的高級語言中都有子程式這個概念,用子程式實作模塊的功能,
在C語言中,子程式的作用是由一個主函式和若干個函式構成,由主函式呼叫其他函式,其他函式也可以互相呼叫,同一個函式可以被一個或多個函式呼叫任意多次,
在程式設計中,常將一些常用的功能模塊撰寫成函式,放在函式庫中供公共選用,要善于利用函式,以減少重復撰寫程式段的作業量
二、函式之函式定義
所以綜上所述我們可以知道函式構成代碼執行的邏輯結構,在Go語言中,函式的基本組成為:關鍵字func、函式名、引數串列、回傳值、函式體和回傳陳述句,
所以函式的通用格式如下:

函式定義說明:
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,大資料,人工智能的相關干貨,我們一起提高,一起進步,我是小堆疊君,我們明天再見,拜了個拜,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/71613.html
標籤:Go
上一篇:面試題決議|ACL權限控制機制
