golang基础语法,定义函数类型 为已存在的数据类型起别名

简介

在GO语言中还有另外一种定义使用函数的方式,就是函数类型,所谓的函数类型就是将函数作为一种类型可以用来定义变量,这种用法类似于前面我们讲过的int ,float64,string等类型,这些类型都是可以用来定义变量。基本语法如下:

golang基础语法,定义函数类型 为已存在的数据类型起别名

说明如下:type关键字后面跟着类型的名字(FunType),FunType就是一个类型.那么FunType是一个什么类型呢?

是一个函数类型,因为FunType后面跟着func(用来定义函数的),但是这里注意的是没有函数名字。那么FunType是怎样的一个函数类型呢?是一个需要传递两个整型参数,有一个整型返回值的函数类型。

既然函数类型类似于我们前面学习过的 int ,string 等类型,那么函数类型可以用来定义变量。

var result FuncType //表示定义了一个变量叫result,该变量的 类型是FuncType类型,而该类型是一个函数类型。

下面我们可以使用result这个函数类型的变量来调用函数了。

result=Test //将要调用的函数的名字赋值给result变量(也可以理解成将result变量指向了要调用的函数),这里要注意的是:第一:Test后面不能加括号。第二:函数类型变量result要和将要调用的函数Test保持一致,所谓一致就是我们定义的函数类型FuncType的变量result,只能调用参数是两个整型的,并且有一个返回值,而且也是整型的函数。那么Test函数完全满足要求。

现在已经完成了函数类型变量result指向了函数Test,那么我们可以使用函数类型的变量result调用函数:

result(3,6)//完成函数的调用。

这是我们在GO语言中使用函数类型的方式完成函数的调用,可能有的小伙伴感觉这种方式比较麻烦,不如我们前面讲解的方式使用起来简单。那么在这里,要求大家先理解这种方式,能记住语法就可以了。关于该方式的优势,等我们讲解完面向对象编程这个知识点后,大家就有深刻的理解了。

package main

import "fmt"

func demo1(a int, b int) {

    fmt.Println(a + b)

}

//func (int,int)int函数类型

func demo2(s1 int, s2 int) {

    fmt.Println(s1 + s2)

}

//定义函数类型 为已存在的数据类型起别名

type FUNCDEMO func(int, int)

func main() {

    //demo1(10, 20)

    //函数的名字表示一个地址 函数在代码区的地址

    fmt.Println(demo1)

    //f是func (int,int)函数类型定义的变量

    //var f func(int, int)

    var f FUNCDEMO

    //函数类型定义的变量结束函数的地址

    f = demo1

    fmt.Println(f)

    //通过f调用函数

    f(10, 20)

    f = demo2

    f(1, 2)

    fmt.Printf("%T", f)

}
本作品采用《CC 协议》,转载必须注明作者和本文链接
嗨,我是波波。曾经创业,有收获也有损失。我积累了丰富教学与编程经验,期待和你互动和进步! 公众号:上海PHP自学中心 付费知识星球:破解面试:程序员的求职导师
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
司机 @ 欣昊玉
文章
273
粉丝
339
喜欢
558
收藏
1106
排名:64
访问:12.2 万
私信
所有博文
社区赞助商