golang语言——函数类型

73 阅读1分钟

golang支持函数类型,定义一个函数类型以后,且实现该函数类型的成员函数。具有相同形参和返回值类型的函数可以转换为该函数类型。然后通过在成员函数中调用该函数,可以实现装饰者模式,封装外部函数或者修改函数的返回值以达到外部预期,比如更改返回值字段为统一的字段名等。

package main

import "fmt"

type MyFunc func(name string) string

func (f MyFunc)Show(name string) {
	fmt.Println("Hello I am " + f(name))
}

func ChineseName(name string) string {
	return name
}

func EnglishName(name string) string {
	return name
}

func main() {
	f := MyFunc(ChineseName)
	f.Show("小明")

	f = MyFunc(EnglishName)
	f.Show("xiaoming")
}

函数类型用于代表有共同形参和返回值类型的函数。