原創: IT干貨堆疊

Hello,各位小伙伴大家好,我是小堆疊君,昨天講了關于go語言的函式的定義和自定函式的部分種類,我們今天接著上期所講的內容繼續進行分享,
一、函式之無參有回傳值
有回傳值的函式,必須有明確的終止陳述句,否則會引發編譯錯誤,所以在有回傳值的函式中需要使用關鍵字 return ,
他可以是一個或者多個回傳值,官方建議:最好命名回傳值,因為不命名回傳值,雖然使得代碼更加簡潔了,但是會造成生成的檔案可讀性差,
//方式1
func Test01() int {
return 250
}
//方式2, 給回傳值命名
func Test02() (a int) {
a = 250
return a
}
//方式3, 給回傳值命名
func Test03() (value int) {
value = https://www.cnblogs.com/it-carry/p/250
return
}
func main() {
v1 := Test01() //函式呼叫
v2 := Test02() //函式呼叫
v3 := Test03() //函式呼叫
fmt.Printf("v1 = %d, v2 = %d, v3 = %d/n", v1, v2, v3)
}
有過編程經驗的小伙伴可能發現了,這樣的編程語法其實是和JavaScript相差不大的,
對于函式的呼叫或是定義都和其他語言有點區別,如果慢慢熟悉這種語法了,其實也會覺得go語言是一門很好的入門,且性能很高的語言型別,
為什么會這么說性能很高呢,因為go語言內置了性能測驗包提供了很多三方庫進行協助我們對代碼進行調優作業,
所以只要我們善于使用三方庫,善于學習,肯定會寫出高質量,高可用,高性能的代碼啦,
二、函式之無參多個回傳值
顧名思義,多個回傳值就是利用Go語言處理程式后回傳多個值,但在實戰開發的時候,我們一般是使用兩個回傳值,一個是我們需要回傳的處理后的結果,另一個就是錯誤err,方便我們進行例外處理,
//方式1
func Test01() (int, string) {
return 520, "it干貨堆疊"
}
//方式2, 給回傳值命名
func Test02() (a int, str string) {
a = 520
str = "it干貨堆疊"
return
}
func main() {
v1, v2 := Test01() //函式呼叫
_, v3 := Test02() //函式呼叫, 第一個回傳值丟棄
v4, _ := Test02() //函式呼叫, 第二個回傳值丟棄
fmt.Printf("v1 = %d, v2 = %s, v3 = %s, v4 = %d\n", v1, v2, v3, v4)
}
三、函式之有參回傳值
//求2個數的和差
func SumAndSubtract(num1 int, num2 int) (sun int, subtract int) {
return num1 +num2 ,num1-num2
}
func main() {
min, max := SumAndSubtract(33, 22)
fmt.Printf("min = %d, max = %d\n", min, max)
//sum = 55, subtract = 11
}
四、函式之遞回函式
遞回指函式可以直接或間接的呼叫自身,遞回函式通常有相同的結構:一個跳出條件和一個遞回體,
所謂跳出條件就是根據傳入的引數判斷是否需要停止遞回,而遞回體則是函式自身所做的一些處理,在編程語言中特別是對于樹形結構中我們常常使用的是關于遞回的操作,
我們現在來通過回圈實作1+2+3……+100的相加求和例子
// 普通實作,利用回圈進行累加
func Test01() int {
i := 1
sum := 0
for i = 1; i <= 100; i++ {
sum += i
}
return sum
}
//通過遞回實作1+2+3……+100
func Test02(num int) int {
if num == 1 {
return 1
}
return num + Test02(num-1) //函式呼叫本身
}
//通過遞回實作1+2+3……+100
func Test03(num int) int {
if num == 100 {
return 100
}
return num + Test03(num+1) //函式呼叫本身
}
func main() {
fmt.Println(Test01()) //5050
fmt.Println(Test02(100)) //5050
fmt.Println(Test03(1)) //5050
}
我們用了三種方式來進行實作這個例子,一種是普通的for回圈相加,我們在代碼中已經定死了100的常數,
假如我們做成99的相加的話,那么就得改代碼,所以實用性不高,
另一種是關于進行傳參,我們傳入100作為最終的計算數字,如果我們想做成50的相加,那么也只需要改變傳參,可用性較高,
最后用的是初始傳參,雖然是可以做為100以內的計算,但如果我們改成101的呢?
他是不是會一直計算下去導致記憶體溢位呢?所以我們在撰寫代碼的時候,也是需要大家能夠多想一下,畢竟這個也是需要經驗的積累的一個程序,
好了,今天的分享就到這里啦,我們主要分享了一下關于go語言的無參,有參 和遞回函式,下一期我們繼續分享關于go語言的函式型別,
我是小堆疊君,如果你喜歡我的分享,麻煩你點擊一個好看,轉發或分享,當然也可以后臺私信給我哦,
這里每天會分享包含java,go,Python,大資料,人工智能的相關干貨,我們一起提高,一起進步,我是小堆疊君,我們明天再見,拜了個拜,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/69247.html
標籤:Go
