golang如何通過type定義函數類型
函數簽名
定義
函數類型 又叫 函數簽名 , 一個函數 的類型就是函數定義首行去掉函數名、參數名和{,可以 使用 fmt.Printf 的”%T”格式化參數打印函數的類型。
函數類型相同
兩個函數類型相同的條件是:擁有相同的形參列表和返回值列表(列表元素的次序、個數和類型都相同),形參名可以不同 。
以下 3 個函數的函數類型完全一樣。
func add (a , b int) int { return a + b } func sub (c int, d int) int { return c - d } func mul (e int, f int) int { return e * f }
舉個栗子
新建test.go
package main import "fmt" func add(a, b int) int { return a + b } func sub(c int, d int) int { return c - d } func mul(e int, f int) int { return e * f } func main() { fmt.Printf("%T\n", add) fmt.Printf("%T\n", sub) fmt.Printf("%T\n", mul) }
執(zhí)行go run test.go輸出結果如下:
func(int, int) int
func(int, int) int
func(int, int) int
通過type定義函數類型
通過 type 可以定義函數類型,格式如下
type typeName func(arguments) retType
函數類型也是一種類型,故可以將其定義為函數入參,在 go 語言中函數名可以看做是函數類型的常量,所以我們可以直接將函數名作為參數傳入的函數中。
package main import "fmt" func add(a, b int) int { return a + b } //sub作為函數名可以看成是 op 類型的常量 func sub(a, b int) int { return a - b } //定義函數類型 op type op func(a, b int) int //形參指定傳入參數為函數類型op func Oper(fu op, a, b int) int { return fu(a, b) } func main() { //在go語言中函數名可以看做是函數類型的常量,所以我們可以直接將函數名作為參數傳入的函數中。 aa := Oper(add, 1, 2) fmt.Println(aa) bb := Oper(sub, 1, 2) fmt.Println(bb) }
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Go語言實現百萬級WebSocket連接架構設計及服務優(yōu)化
本文將詳細介紹如何在Go中構建一個能夠支持百萬級WebSocket連接的服務,包括系統架構設計、性能優(yōu)化策略以及具體的實現步驟和代碼示例2024-01-01