Golang中的自定義函數(shù)類型詳解
定義函數(shù)類型語(yǔ)法
定義函數(shù)類型的語(yǔ)法如下:
type FuncType func(argument_list) return_type
FuncType 是定義的函數(shù)類型名稱,argument_list 是函數(shù)的參數(shù)列表,return_type 是函數(shù)的返回值類型。定義函數(shù)類型后,就可以使用這個(gè)類型來(lái)聲明變量、作為函數(shù)的參數(shù)或返回值類型等。簡(jiǎn)單示例如下:
type MathFunc func(int, int) int // 定義函數(shù)類型
func add(x, y int) int { // 定義加法函數(shù)
return x + y
}
func sub(x, y int) int { // 定義減法函數(shù)
return x - y
}函數(shù)類型可以定義自己的方法,下面定義一個(gè)方法用來(lái)執(zhí)行函數(shù)本身
type MathFunc func(int, int) int // 定義函數(shù)類型
func (f *MathFunc) run(str string) { // MathFunc 提供的方法
fmt.Println(str)
}
func add(x, y int) int { // 定義加法函數(shù)
return x + y
}
func sub(x, y int) int { // 定義減法函數(shù)
return x - y
}完整使用示例
下面是一個(gè)完整的使用示例:
package main
import "fmt"
type MathFunc func(int, int) int // 定義函數(shù)類型
func (f *MathFunc) test(str string) { // MathFunc 提供的方法
fmt.Println(str)
}
func add(x, y int) int { // 定義加法函數(shù)
return x + y
}
func sub(x, y int) int { // 定義減法函數(shù)
return x - y
}
func main() {
var f MathFunc // 聲明函數(shù)類型變量
f = add // 函數(shù)類型變量賦值為加法函數(shù)
fmt.Println(f(1, 2))// 給加法函數(shù)傳參并打印返回值
f.test("路多辛的博客")
f = sub // 函數(shù)類型變量賦值為減法函數(shù)
fmt.Println(f(3, 2))// 給減法函數(shù)傳參并打印返回值
f.test("路多辛的所思所想")
}運(yùn)行看下效果
$ go run main.go
3
路多辛的博客
1
路多辛的所思所想
首先定義了一個(gè)名稱為 MathFunc 的函數(shù)類型,用來(lái)描述接受兩個(gè) int 類型參數(shù)并返回一個(gè) int 類型值的函數(shù)并定義了一個(gè) test 方法,然后實(shí)現(xiàn)兩個(gè)具體的函數(shù):add 和 sub,把這兩個(gè)函數(shù)與函數(shù)類型變量 f 綁定,并通過(guò)傳遞不同的參數(shù)調(diào)用 f 來(lái)執(zhí)行加法或減法運(yùn)算。
注意點(diǎn)
使用自定義函數(shù)類型時(shí)需要注意以下幾點(diǎn):
- 自定義函數(shù)類型的簽名需要和實(shí)際函數(shù)的簽名一致,否則會(huì)編譯錯(cuò)誤;
- 自定義函數(shù)類型可以像其他類型一樣進(jìn)行賦值、傳參等操作;
- 自定義函數(shù)類型可以作為函數(shù)參數(shù)或返回值類型。
小結(jié)
在 Golang 中,函數(shù)是一等公民,可以作為函數(shù)參數(shù)傳遞,也可以作為函數(shù)的返回值返回。通過(guò)使用自定義的函數(shù)類型,函數(shù)的使用可以更靈活多樣。
到此這篇關(guān)于Golang中的自定義函數(shù)類型詳解的文章就介紹到這了,更多相關(guān)Golang自定義函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang實(shí)現(xiàn)將視頻按照時(shí)間維度剪切的工具
這篇文章主要為大家詳細(xì)介紹了如何利用Golang實(shí)現(xiàn)將視頻按照時(shí)間維度進(jìn)行剪切,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2022-12-12
使用IDEA配置GO語(yǔ)言的開發(fā)環(huán)境備忘錄
最近在配置idea開發(fā)go語(yǔ)言時(shí)碰到很多問(wèn)題,想著很多人都可能會(huì)遇到,所以下面這篇文章主要給大家介紹了關(guān)于使用IDEA配置GO語(yǔ)言的開發(fā)環(huán)境,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-05-05
windows安裝部署go超詳細(xì)實(shí)戰(zhàn)記錄(實(shí)測(cè)有用!)
Golang語(yǔ)言在近年來(lái)因?yàn)槠涓咝阅?、編譯速度快、開發(fā)成本低等特點(diǎn)逐漸得到大家的青睞,這篇文章主要給大家介紹了關(guān)于windows安裝部署go超詳細(xì)實(shí)戰(zhàn)的相關(guān)資料,需要的朋友可以參考下2023-02-02
Go語(yǔ)言實(shí)戰(zhàn)學(xué)習(xí)之流程控制詳解
這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言中的流程控制,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Go語(yǔ)言有一定的幫助?,需要的朋友可以參考下2022-08-08
淺析Go設(shè)計(jì)模式之Facade(外觀)模式
本文將介紹外觀模式的概念、結(jié)構(gòu)和工作原理,并提供一些在Go中實(shí)現(xiàn)外觀模式的示例代碼,通過(guò)使用外觀模式,可以降低代碼的耦合度,提高代碼的可維護(hù)性和可讀性,需要的朋友可以參考下2023-05-05
Golang中context包使用場(chǎng)景和示例詳解
這篇文章結(jié)合示例代碼介紹了context包的幾種使用場(chǎng)景,文中有詳細(xì)的代碼示例,對(duì)學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-05-05
Go Gin實(shí)現(xiàn)文件上傳下載的示例代碼
這篇文章主要介紹了Go Gin實(shí)現(xiàn)文件上傳下載的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04

