美图齐众专注资阳网站设计 资阳网站制作 资阳网站建设
资阳网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

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

=[[423991]]

创新互联-专业网站定制、快速模板网站建设、高性价比潍城网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式潍城网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖潍城地区。费用合理售后完善,10余年实体公司更值得信赖。

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

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

 
 
 
  1. type Greeting func(name string) string

这种类型有两个特征:

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

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

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

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

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

 
 
 
  1. func (g Greeting) say(n string) {
  2.     fmt.Println(g(n))
  3. }

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

 
 
 
  1. greet.say("World")

将上面的代码整合在一起

 
 
 
  1. package main
  2. import "fmt"
  3. // Greeting function types
  4. type Greeting func(name string) string
  5. func (g Greeting) say(n string) {
  6.     fmt.Println(g(n))
  7. }
  8. func english(name string) string {
  9.     return "Hello, " + name
  10. }
  11. func main() {
  12.     greet := Greeting(english)
  13.     greet.say("World")
  14. }
  15. // output: Hello, World

文章标题:如何使用Go中的函数类型(FunctionTypes)?
当前网址:http://www.zsjierui.cn/article/djjgsge.html

其他资讯