=
函数类型(function types)是一种很特殊的类型,它表示着所有拥有同样的入参类型和返回值类型的函数集合。
如下这一行代码,定义了一个名叫 Greeting 的函数类型
- typeGreetingfunc(namestring)string
这种类型有两个特征:
只接收一个参数 ,并且该参数的类型为 string
返回值也只有一个参数,其类型为 string
一个函数只要满足这些特征,那么它就可以通过如下方式将该函数转换成 Greeting 类型的函数对象(也即 greet)
- funcenglish(namestring)string{
- return"Hello,"+name
- }
- //转换成Greeting类型的函数对象
- greet:=Greeting(english)
- //或者
- vargreetGreeting=english
greet 做为 Greeting 类型的对象,也拥有 Greeting 类型的所有方法,比如下面的 say 方法
- func(gGreeting)say(nstring){
- fmt.Println(g(n))
- }
直接调用试试看,并不会报错
- greet.say("World")
将上面的代码整合在一起
- packagemain
- import"fmt"
- //Greetingfunctiontypes
- typeGreetingfunc(namestring)string
- func(gGreeting)say(nstring){
- fmt.Println(g(n))
- }
- funcenglish(namestring)string{
- return"Hello,"+name
- }
- funcmain(){
- greet:=Greeting(english)
- greet.say("World")
- }
- //output:Hello,World
原文链接:https://mp.weixin.qq.com/s/hrnQI8Gx-LeJq9jQBhWsxg