如何使用 Go 中的函数类型 (Function Types)?

时间:2022-04-03 14:30:10

=如何使用 Go 中的函数类型 (Function Types)?

函数类型(function types)是一种很特殊的类型,它表示着所有拥有同样的入参类型和返回值类型的函数集合。

如下这一行代码,定义了一个名叫 Greeting 的函数类型

  1. typeGreetingfunc(namestring)string

这种类型有两个特征:

只接收一个参数 ,并且该参数的类型为 string

返回值也只有一个参数,其类型为 string

一个函数只要满足这些特征,那么它就可以通过如下方式将该函数转换成 Greeting 类型的函数对象(也即 greet)

  1. funcenglish(namestring)string{
  2. return"Hello,"+name
  3. }
  4.  
  5. //转换成Greeting类型的函数对象
  6. greet:=Greeting(english)
  7. //或者
  8. vargreetGreeting=english

greet 做为 Greeting 类型的对象,也拥有 Greeting 类型的所有方法,比如下面的 say 方法

  1. func(gGreeting)say(nstring){
  2. fmt.Println(g(n))
  3. }

直接调用试试看,并不会报错

  1. greet.say("World")

将上面的代码整合在一起

  1. packagemain
  2.  
  3. import"fmt"
  4.  
  5. //Greetingfunctiontypes
  6. typeGreetingfunc(namestring)string
  7.  
  8. func(gGreeting)say(nstring){
  9. fmt.Println(g(n))
  10. }
  11.  
  12. funcenglish(namestring)string{
  13. return"Hello,"+name
  14. }
  15.  
  16. funcmain(){
  17. greet:=Greeting(english)
  18. greet.say("World")
  19. }
  20. //output:Hello,World

原文链接:https://mp.weixin.qq.com/s/hrnQI8Gx-LeJq9jQBhWsxg