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

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

=[[423991]]

函数类型(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)) 

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

  1. greet.say("World"

将上面的代码整合在一起

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

 

责任编辑:武晓燕 来源: Go编程时光
相关推荐

2010-04-01 10:55:48

Oracle 数据类型

2018-11-05 14:53:14

Go函数代码

2023-03-20 08:14:11

PHP类型转换

2010-09-06 17:35:43

SQL函数

2023-09-01 09:19:40

CSS函数模式

2021-10-31 15:46:34

Go语言进程

2023-09-27 10:19:37

类型video函数

2023-10-29 16:18:26

Go接口

2024-03-04 22:35:07

Currying类型函数

2023-07-16 23:43:05

Go语言模式

2023-11-29 07:47:29

Golang函数

2009-12-04 12:51:27

PHP functio

2023-10-23 19:27:21

Go函数

2022-05-05 09:02:24

Go函数调用栈

2022-05-06 19:53:33

Java serve

2010-09-06 17:11:14

SQL函数

2022-11-06 23:17:23

Go语言项目

2022-07-03 23:07:48

Go语言参数

2024-02-26 00:02:00

开发Go

2022-07-04 14:41:31

Go 语言变长参数变长参数函数
点赞
收藏

51CTO技术栈公众号