如何使用 Go 中的函數類型 (Function Types)?
作者:寫代碼的明哥
函數類型(function types)是一種很特殊的類型,它表示著所有擁有同樣的入參類型和返回值類型的函數集合。
函數類型(function types)是一種很特殊的類型,它表示著所有擁有同樣的入參類型和返回值類型的函數集合。
如下這一行代碼,定義了一個名叫 Greeting 的函數類型
- type Greeting func(name string) string
這種類型有兩個特征:
只接收一個參數 ,并且該參數的類型為 string
返回值也只有一個參數,其類型為 string
一個函數只要滿足這些特征,那么它就可以通過如下方式將該函數轉換成 Greeting 類型的函數對象(也即 greet)
- func english(name string) string {
- return "Hello, " + name
- }
- // 轉換成 Greeting 類型的函數對象
- greet := Greeting(english)
- // 或者
- var greet Greeting = english
greet 做為 Greeting 類型的對象,也擁有 Greeting 類型的所有方法,比如下面的 say 方法
- func (g Greeting) say(n string) {
- fmt.Println(g(n))
- }
直接調用試試看,并不會報錯
- 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
責任編輯:武曉燕
來源:
Go編程時光