GO語言匿名函數(shù)的幾種使用方式
匿名函數(shù)說明
在Go語言中,匿名函數(shù)(Anonymous Function)是一種沒有名稱的函數(shù)定義方式,可以直接定義并使用,或者賦值給變量。Go語言中的匿名函數(shù)也被稱為函數(shù)字面量(Function Literal)。
基本語法
func(參數(shù)列表) 返回值類型 {
// 函數(shù)體
}
匿名函數(shù)的幾種使用方式
直接定義并調(diào)用(立即執(zhí)行函數(shù))
這種調(diào)用方式和直接把功能寫在函數(shù)中的區(qū)別:
1、將無法復(fù)用功能塊獨(dú)立出來,一個(gè)功能使用一段代碼,結(jié)果清晰。
2、匿名函數(shù)中定義的變量有自己的空間,不會(huì)污染外部的變量。
package main
import "fmt"
func main() {
// 定義并立即執(zhí)行
func() {
fmt.Println("這是一個(gè)匿名函數(shù)")
}() // 注意這里的括號(hào)表示立即調(diào)用
// 帶參數(shù)的立即執(zhí)行匿名函數(shù)
func(msg string) {
fmt.Println("收到消息:", msg)
}("Hello, Go!")
}
賦值給變量,后續(xù)調(diào)用
這里將匿名函數(shù)賦值給函數(shù)指針變量add,后續(xù)直接調(diào)用函數(shù)指針變量add就相當(dāng)于調(diào)用匿名函數(shù)。
package main
import "fmt"
func main() {
// 將匿名函數(shù)賦值給變量
add := func(a, b int) int {
return a + b
}
result := add(3, 5)
fmt.Println("3 + 5 =", result) // 輸出: 3 + 5 = 8
}
作為函數(shù)參數(shù)(回調(diào)函數(shù))
package main
import "fmt"
// 接受函數(shù)作為參數(shù)的函數(shù)
func calculate(a, b int, op func(int, int) int) int {
return op(a, b)
}
func main() {
sum := calculate(10, 20, func(x, y int) int {
return x + y
})
product := calculate(10, 20, func(x, y int) int {
return x * y
})
fmt.Println("Sum:", sum) // 輸出: Sum: 30
fmt.Println("Product:", product) // 輸出: Product: 200
}
下面這個(gè)用法對于新手可能難以理解,博主來仔細(xì)拆解一下。
首先是函數(shù)的定義:

再來看看函數(shù)的調(diào)用和匿名函數(shù)的實(shí)現(xiàn):

到此這篇關(guān)于GO語言匿名函數(shù)的幾種使用方式的文章就介紹到這了,更多相關(guān)GO語言匿名函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang 實(shí)現(xiàn)獲取當(dāng)前函數(shù)名稱和文件行號(hào)等操作
這篇文章主要介紹了Golang 實(shí)現(xiàn)獲取當(dāng)前函數(shù)名稱和文件行號(hào)等操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-05-05
Go語言實(shí)現(xiàn)23種設(shè)計(jì)模式的使用
設(shè)計(jì)模式是軟件工程中各種常見問題的經(jīng)典解決方案,,本文主要介紹了Go語言實(shí)現(xiàn)23種設(shè)計(jì)模式的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
詳解Golang如何優(yōu)雅接入多個(gè)遠(yuǎn)程配置中心
這篇文章主要為大家為大家介紹了Golang如何優(yōu)雅接入多個(gè)遠(yuǎn)程配置中心詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
基于go手動(dòng)寫個(gè)轉(zhuǎn)發(fā)代理服務(wù)的代碼實(shí)現(xiàn)
這篇文章主要介紹了基于go手動(dòng)寫個(gè)轉(zhuǎn)發(fā)代理服務(wù)的代碼實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02
Golang使用channel實(shí)現(xiàn)一個(gè)優(yōu)雅退出功能
最近補(bǔ)?Golang?channel?方面八股的時(shí)候發(fā)現(xiàn)用?channel?實(shí)現(xiàn)一個(gè)優(yōu)雅退出功能好像不是很難,之前寫的?HTTP?框架剛好也不支持優(yōu)雅退出功能,于是就參考了?Hertz?優(yōu)雅退出方面的代碼,為我的?PIANO?補(bǔ)足了這個(gè)?feature2023-03-03

