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

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

=[[423991]]

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

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

type Greeting func(name string) string 
  • 1.

这种类型有两个特征:

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

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

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

func english(name string) string { 
    return "Hello, " + name 

 
// 转换成 Greeting 类型的函数对象 
greet := Greeting(english) 
// 或者 
var greet Greeting = english 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

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

func (g Greeting) say(n string) { 
    fmt.Println(g(n)) 

  • 1.
  • 2.
  • 3.

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

greet.say("World"
  • 1.

将上面的代码整合在一起

package main 
 
import "fmt" 
 
// Greeting function types 
type Greeting func(name string) string 
 
func (g Greeting) say(n string) { 
    fmt.Println(g(n)) 

 
func english(name string) string { 
    return "Hello, " + name 

 
func main() { 
    greet := Greeting(english) 
    greet.say("World"

// output: Hello, World 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.

 

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

2010-04-01 10:55:48

Oracle 数据类型

2018-11-05 14:53:14

Go函数代码

2023-09-01 09:19:40

CSS函数模式

2010-09-06 17:35:43

SQL函数

2021-10-31 15:46:34

Go语言进程

2023-03-20 08:14:11

PHP类型转换

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函数

2023-10-23 19:27:21

Go函数

2009-12-04 12:51:27

PHP functio

2022-05-05 09:02:24

Go函数调用栈

2022-05-06 19:53:33

Java serve

2022-11-06 23:17:23

Go语言项目

2022-07-04 14:41:31

Go 语言变长参数变长参数函数

2022-07-03 23:07:48

Go语言参数

2024-02-26 00:02:00

开发Go

2023-12-21 07:06:32

Go编写HTML
点赞
收藏

51CTO技术栈公众号