函數(shù)類型(function types)是一種很特殊的類型,它表示著所有擁有同樣的入?yún)㈩愋秃头祷刂殿愋偷暮瘮?shù)集合。 如下這一行代碼,定義了一個名叫 Greeting 的函數(shù)類型 type Greeting func(name string) string
這種類型有兩個特征: 只接收一個參數(shù) ,并且該參數(shù)的類型為 string 返回值也只有一個參數(shù),其類型為 string
一個函數(shù)只要滿足這些特征,那么它就可以通過如下方式將該函數(shù)轉(zhuǎn)換成 Greeting 類型的函數(shù)對象(也即 greet) func english(name string) string { return 'Hello, ' + name }
// 轉(zhuǎn)換成 Greeting 類型的函數(shù)對象 greet := Greeting(english) // 或者 var greet Greeting = english
greet 做為 Greeting 類型的對象,也擁有 Greeting 類型的所有方法,比如下面的 say 方法 func (g Greeting) say(n string) { fmt.Println(g(n)) }
直接調(diào)用試試看,并不會報錯 greet.say('World')
將上面的代碼整合在一起 package main
import 'fmt'
// Greeting function types type Greeting func(name string) string
func (g Greeting) say(n string) { fmt.Println(g(n)) }
func english(name string) string { return 'Hello, ' + name }
func main() { greet := Greeting(english) greet.say('World') } // output: Hello, World
|