返回值类型与函数类型不匹配_golang基础语法,定义函数类型 为已存在的数据类型起别名...
簡介
在 GO 語言中還有另外一種定義使用函數的方式,就是函數類型,所謂的函數類型就是將函數作為一種類型可以用來定義變量,這種用法類似于前面我們講過的 int ,float64,string 等類型,這些類型都是可以用來定義變量。基本語法如下:
說明如下:type 關鍵字后面跟著類型的名字 (FunType),FunType 就是一個類型。那么 FunType 是一個什么類型呢?
是一個函數類型,因為 FunType 后面跟著 func (用來定義函數的),但是這里注意的是沒有函數名字。那么 FunType 是怎樣的一個函數類型呢?是一個需要傳遞兩個整型參數,有一個整型返回值的函數類型。
既然函數類型類似于我們前面學習過的 int ,string 等類型,那么函數類型可以用來定義變量。
var result FuncType // 表示定義了一個變量叫 result, 該變量的 類型是 FuncType 類型,而該類型是一個函數類型。
下面我們可以使用 result 這個函數類型的變量來調用函數了。
result=Test // 將要調用的函數的名字賦值給 result 變量(也可以理解成將 result 變量指向了要調用的函數),這里要注意的是:第一:Test 后面不能加括號。第二:函數類型變量 result 要和將要調用的函數 Test 保持一致,所謂一致就是我們定義的函數類型 FuncType 的變量 result,只能調用參數是兩個整型的,并且有一個返回值,而且也是整型的函數。那么 Test 函數完全滿足要求。
現在已經完成了函數類型變量 result 指向了函數 Test, 那么我們可以使用函數類型的變量 result 調用函數:
result (3,6)// 完成函數的調用。
這是我們在 GO 語言中使用函數類型的方式完成函數的調用,可能有的小伙伴感覺這種方式比較麻煩,不如我們前面講解的方式使用起來簡單。那么在這里,要求大家先理解這種方式,能記住語法就可以了。關于該方式的優勢,等我們講解完面向對象編程這個知識點后,大家就有深刻的理解了。
package mainimport "fmt"
func demo1(a int, b int) {
fmt.Println(a + b)
}
//func (int,int)int函數類型
func demo2(s1 int, s2 int) {
fmt.Println(s1 + s2)
}
//定義函數類型 為已存在的數據類型起別名
type FUNCDEMO func(int, int)
func main() {
//demo1(10, 20)
//函數的名字表示一個地址 函數在代碼區的地址
fmt.Println(demo1)
//f是func (int,int)函數類型定義的變量
//var f func(int, int)
var f FUNCDEMO
//函數類型定義的變量結束函數的地址
f = demo1
fmt.Println(f)
//通過f調用函數
f(10, 20)
f = demo2
f(1, 2)
fmt.Printf("%T", f)
}
總結
以上是生活随笔為你收集整理的返回值类型与函数类型不匹配_golang基础语法,定义函数类型 为已存在的数据类型起别名...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cookie session token
- 下一篇: tensorflow图像分割unet_A