Go語言的type?func()用法詳解
一、前置基礎(chǔ)
1. go 函數(shù)基礎(chǔ)
在Go語言中,函數(shù)的基本組成為:關(guān)鍵字func、函數(shù)名、參數(shù)列表、返回值、函數(shù)體和返回語句。
func 函數(shù)名(參數(shù)列表) 返回值類型 {函數(shù)體內(nèi)部}Go語言是強數(shù)據(jù)類型的語言,參數(shù)是要指定類型的不然就報錯。func 是函數(shù)的聲明關(guān)鍵字。
1) 返回值
返回值的定義,是可以給返回值取一個名稱的,還有一點是和其他的編程語言不一樣的是在Go語言中函數(shù)的返回值可以有多個的
func addTwoNumber(a int, b int) (int, int) {
return a+b, a-b
}同時可以給返回值取一個別名
func addTwoNumber(a int, b int) (sum, dif int) {
return a+b, a-b
}像這樣給返回值取完名字后可以給返回值直接賦值
func addTwoNumber(a int, b int) (sum, dif int) {
sum = a+b
dif = a-b
return
}同樣這樣也是可以直接返回sum,和dif兩個值的。
2) 函數(shù)可變參數(shù)
func sum(numbers ...int) int {
s := 0
for i := range numbers{
s += i
}r
eturn s
}f
unc main() {
fmt.Println(sum(1,2,3,4,5))
}像這樣我們就可以傳給sum函數(shù)多個值了。
2. 函數(shù)簽名
函數(shù)類型 又叫 函數(shù)簽名 , 一個函數(shù) 的類型就是函數(shù)定義首行去掉函數(shù)名、參數(shù)名和{,可以 使用 fmt.Printf 的”%T”格式化參數(shù)打印函數(shù)的類型。
函數(shù)類型相同
兩個函數(shù)類型相同的條件是**:擁有相同的形參列表和返回值列表(列表元素的次序、個數(shù)和類型都相同),形參名可以不同 。** 以下 3 個函數(shù)的函數(shù)類型完全一樣。
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 }驗證demo
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í)行g(shù)o run test.go輸出結(jié)果如下:
func(int, int) int
func(int, int) int
func(int, int) int
二、Go語言的type func()用法 | type func() 自定義函數(shù)類型
1. golang通過type定義函數(shù)類型
在 Go 語言中,type 可以定義任何自定義的類型
比如熟悉的:type dog struct{},type myInt int 等等
所以 func 也是可以作為類型自定義的,type myFunc func(int) int,意思是自定義了一個叫 myFunc 的函數(shù)類型,這個函數(shù)的簽名必須符合輸入為 int,輸出為 int。
golang通過type定義函數(shù)類型
通過 type 可以定義函數(shù)類型,格式如下
type typeName func(arguments) retType
函數(shù)類型也是一種類型,故可以將其定義為函數(shù)入?yún)?/strong>,在 go 語言中函數(shù)名可以看做是函數(shù)類型的常量,所以我們可以直接將函數(shù)名作為參數(shù)傳入的函數(shù)中。
驗證demo
package main
import "fmt"
func add(a, b int) int {
return a + b
}
//sub作為函數(shù)名可以看成是 op 類型的常量
func sub(a, b int) int {
return a - b
//定義函數(shù)類型 op
type op func(a, b int) int
//形參指定傳入?yún)?shù)為函數(shù)類型op
func Oper(fu op, a, b int) int {
return fu(a, b)
func main() {
//在go語言中函數(shù)名可以看做是函數(shù)類型的常量,所以我們可以直接將函數(shù)名作為參數(shù)傳入的函數(shù)中。
aa := Oper(add, 1, 2)
fmt.Println(aa)
bb := Oper(sub, 1, 2)
fmt.Println(bb)到此這篇關(guān)于Go語言的type func()用法的文章就介紹到這了,更多相關(guān)Go語言type func()用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go語言學(xué)習(xí)教程之結(jié)構(gòu)體的示例詳解
結(jié)構(gòu)體是一個序列,包含一些被命名的元素,這些被命名的元素稱為字段(field),每個字段有一個名字和一個類型。本文通過一些示例帶大家深入了解Go語言中結(jié)構(gòu)體的使用,需要的可以參考一下2022-09-09
Go語言學(xué)習(xí)之golang-jwt/jwt的教程分享
jwt是?json?web?token的簡稱。go使用jwt目前,主流使用的jwt庫是golang-jwt/jwt。本文就來和大家講講golang-jwt/jwt的具體使用,需要的可以參考一下2023-01-01
Golang?Template實現(xiàn)自定義函數(shù)的操作指南
這篇文章主要為大家詳細介紹了Golang如何利用Template實現(xiàn)自定義函數(shù)的操作,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-02-02
深入理解Golang之http server的實現(xiàn)
這篇文章主要介紹了深入理解Golang之http server的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11

