昨天了解在 Go 語言中函式 (function) 介紹及宣告函式,今天來了解如何呼叫函式及函式參數。
當我們宣告好一個函式,要如何執行函式呢?那就是要在需要使用的地方呼叫它,不然如果都沒有呼叫函式,你宣告的函式就會毫無用武之地,並不會自己執行。
函式可以呼叫其他函式,也可以呼叫自己,只要在某地呼叫函式,控制權便會轉移到被呼叫的函式本身,當被呼叫的函式執行完畢時(執行到右大括號 } 時),控制權才會轉移回本來的位置。
函式名稱(參數 1, 參數 2...) // 若無參數就是()
範例 1:
package main
import "fmt"
func printMyFavorite() {
myFavorite := "奇犽"
fmt.Println("我最喜歡的角色是:", myFavorite)
}
func main(){}
範例 1(執行結果):
咦~啊怎麼沒有東西???原來是因為我直接現場犯了上面說的錯誤,那就是我宣告了 printMyFavorite 函式,但我沒有在任何地方呼叫這個函式,那 printMyFavorite 函式便不會執行,當然不會印出我們預期的:「我最喜歡的角色是: 奇犽」字樣了。
正確寫法如下,且順便加上了控制權轉移的打印:
範例 2:
package main
import "fmt"
func printMyFavorite() {
fmt.Println("控制權轉移到 printMyFavorite 函式")
myFavorite := "奇犽"
fmt.Println("我最喜歡的角色是:", myFavorite)
}
func main(){
fmt.Println("控制權本來在 main 函式")
printMyFavorite() // 呼叫 printMyFavorite 函式,控制權暫時轉移給 printMyFavorite 函式,待執行完畢控制權再回來
fmt.Println("控制權回到 main 函式")
}
範例 2(執行結果):
控制權本來在 main 函式
控制權轉移到 printMyFavorite 函式
我最喜歡的角色是: 奇犽
控制權回到 main 函式
函式的參數決定你要把哪些引數或值傳給函式,參數可以有一個也可以有很多個。參數其實就等於活在函式內的區域變數,它的作用範圍只限於函式內部。
當定義函式寫下 printMyFavorite(name string, age int) ,括弧裡的 name, age 就是 參數 。在呼叫函式時寫下 printMyFavorite("奇犽", 12),括弧裡的 "奇犽", 12 就是 引數 。特別需注意的是,引數傳入的型別順序, 必須 與參數定義相同。
補充:
利用變數當引數也是 OK 的,只要傳入的變數型別符合,變數的值就會賦予參數且帶入函式。
範例 3:
package main
import "fmt"
func printMyFavorite(name string, age int) {
fmt.Println("我最喜歡的角色是:", name, ", 他今年", age, "歲。")
}
func main(){
printMyFavorite("奇犽", 12)
}
範例 3(執行結果):
我最喜歡的角色是: 奇犽 , 他今年 12 歲。
若是調皮的你故意把引數 "奇犽", 12
改成, 12, "奇犽"
,便會出現型別不正確的錯誤。
./main.go:1057:21: cannot use 12 (untyped int constant) as string value in argument to printMyFavorite
./main.go:1057:25: cannot use "奇犽" (untyped string constant) as int value in argument to printMyFavorite
今天了解了在 Go 語言中,如何呼叫函式及函式參數,明天繼續來了解函式傳回值的眉眉角角,那我們明天見~~