函式就是一塊執行特定任務的代碼,在輸入源的基礎上通過一些演算法生成預期的輸出,
一、函式的宣告
Go 語言中的函式宣告語法如下:
func 函式名(引數名 型別,引數名 型別)(回傳值1型別,回傳值2型別){
函式體內容
return 回傳值1,回傳值2
}
注意:函式中的引數串列和回傳值不是必須的
二、函式的定義方式
1、有引數無回傳值
func add(a int, b int) {
fmt.Println(a + b)
}
2、有引數無回傳值,有多個相同型別引數
func add(a, b int) {
fmt.Println(a + b)
}
3、有引數無回傳值,有多個相同型別引數,也有不同型別
func add(a, b int, msg string) {
fmt.Println(a + b)
fmt.Println(msg)
}
4、多個引數,一個回傳值
func add(a, b int) int {
return a + b
}
5、多個引數,多個回傳值
func add(a, b int) (int, int) {
return a + b, a * b
}
6、命名回傳值
func add(a, b int) (c int, d int) {
c = a + b
d = a * b
return // 這個時候不需要在寫c,d了
}
7、函式回傳值為函式(函式是一等公民,函式可以賦值給變數)
func test() func() {
return func() {
fmt.Println("我是回傳函式")
}
}
8、函式回傳值為函式,回傳的函式帶引數
func test() func(msg string) { // 型別只要有不一樣的地方,就不是一個型別
return func(msg string) {
fmt.Println(msg)
}
}
9、函式回傳值為函式,回傳的函式帶引數,帶回傳值
func test() func(a,b int) int{
return func(a,b int) int {
return a+b
}
}
10、函式引數為函式型別,回傳值為帶引數,帶回傳值的函式型別
package main
import "fmt"
func main() {
var c = f
a,b := test(c)(3,4)
fmt.Println(a, b)
}
func test(f func()) func(a, b int) (int, int) {
return func(a, b int) (int, int) {
f()
return a + b, a * b
}
}
func f() {
fmt.Println("我是函式引數")
}
11、閉包函式:定義在函式內部,對外部作用域有參考
閉包函式就是多了一種函式傳參的方法
func test(age int) func() {
a := func() {
fmt.Println(age)
}
return a // a就是閉包函式
}
12、匿名函式(定義在函式內部的函式,不能是有名函式,頭等函式)
var a func()
a = func (){
fmt.Println("我是匿名函式")
}
a()
13、空白符( _ 在Go中被用作空白符,可以用來表示任何型別的任何值)
package main
import "fmt"
func main() {
_, b := test(3, 5)
fmt.Println(b) // 回傳 15
}
func test(a, b int) (int, int) {
return a + b, a * b
}
學習之旅
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/308203.html
標籤:Go
上一篇:Go語言之變數與基礎資料型別
