Go語言學習筆記 函式的高階使用方法

2021-09-29 03:46:04 字數 1805 閱讀 4338

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...