Golang中的自定義函數(shù)類型詳解
定義函數(shù)類型語法
定義函數(shù)類型的語法如下:
type FuncType func(argument_list) return_type
FuncType 是定義的函數(shù)類型名稱,argument_list 是函數(shù)的參數(shù)列表,return_type 是函數(shù)的返回值類型。定義函數(shù)類型后,就可以使用這個(gè)類型來聲明變量、作為函數(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è)方法用來執(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ù)類型,用來描述接受兩個(gè) int 類型參數(shù)并返回一個(gè) int 類型值的函數(shù)并定義了一個(gè) test 方法,然后實(shí)現(xiàn)兩個(gè)具體的函數(shù):add 和 sub,把這兩個(gè)函數(shù)與函數(shù)類型變量 f 綁定,并通過傳遞不同的參數(shù)調(diào)用 f 來執(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ù)的返回值返回。通過使用自定義的函數(shù)類型,函數(shù)的使用可以更靈活多樣。
到此這篇關(guān)于Golang中的自定義函數(shù)類型詳解的文章就介紹到這了,更多相關(guān)Golang自定義函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
golang中實(shí)現(xiàn)給gif、png、jpeg圖片添加文字水印
這篇文章主要介紹了golang中實(shí)現(xiàn)給gif、png、jpeg圖片添加文字水印,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-04-04關(guān)于golang中死鎖的思考與學(xué)習(xí)
本文主要介紹了關(guān)于golang中死鎖的思考與學(xué)習(xí),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03golang中兩個(gè)協(xié)程交替打印數(shù)字和字母的實(shí)現(xiàn)
這篇文章給大家介紹了golang中兩個(gè)協(xié)程交替打印數(shù)字和字母的實(shí)現(xiàn),文中通過代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-01-01