golang支援頭等函式的機制。匿名函式頭等函式:支援頭等函式的程式語言,可以把函式賦值給變數,也可以把函式作為其他函式的引數或返回值。
func main()
a()fmt.printf("%t",a)
}
這是把函式賦值給變數的語法,給a賦值的函式沒有函式名稱,這類函式稱為匿名函式。
2.呼叫該函式的唯一方式就是使用變數a。列印出的a的型別是func()。
3.要呼叫乙個匿名函式且不賦值給變數,可以這樣寫:
package main
import(
"fmt"
)func main()()
}
自定義的函式型別
就是取別名,這樣寫
type add func(a int, b int)int
建立的新的函式型別就是add,引數是兩個int變數,返回乙個int型別。
add新函式型別的定義和使用:
package main
import(
"fmt"
)type add func(a int, b int)int
func main()
s := a(5, 6)
fmt.println(s)
}
高階函式滿足下列條件之一的函式就是高階函式:1.接收乙個或多個函式作為引數
2.返回值就是乙個函式
函式作為其他函式的引數
func ******(a func(a, b int) int)
func main()
******(f)
}
函式作為返回值
func ******() func(a, b int) int
return f
}func main()
閉包閉包是匿名函式的乙個特例。當乙個匿名函式所訪問的變數定義在函式體外時,就稱這樣的匿名函式為閉包
package main
import ( "fmt"
)t := "hello"
c := func(b string) string
return c }
func main()
頭等函式的實用
1.過濾乙個students切片,篩選條件
選出grade是b的
type student struct
unc filter(s student, f func(student) bool) student }
return r }
func main()
s2 := student
s := student
f := filter(s, func(s student) bool
return false })
fmt.println(f)
}
2.篩選india的student
c := filter(s, func(s student) bool
return false })
fmt.println(c)
go語言學習筆記 函式
go語言的函式定義更像是python和c語言的結合體,並且也有不定引數的傳參以及位址傳參方式,非常強大。下面舉一些例子來詳細說明 無參無返回值函式 func myfunc 有參無返回值函式 func myfunc1 a int b int 如果同樣型別,可以簡寫成以下內容 func myfunc2 ...
Go語言學習筆記 函式
函式 函式是各個語句指令的集合,可以實現指定的功能,可以重複使用 定義 func 函式名 引數名 引數型別 返回值名 返回值型別 func x,y int 10,20 匿名函式自呼叫,在後面加上括號簡單來說就是 閉包 函式 匿名函式 引用環境 func adder func int int defe...
Go語言學習筆記 內建函式
go中的預定義函式 go中的預定義函式 close newpanic complex delete make recover real lenprint imag capcopy printlnclose 用於channel的通訊,使用它來關閉channel delete 用於map中刪除例項 le...