返回值类型与函数类型不匹配_golang基础语法,定义函数类型 为已存在的数据类型起别名...

本文介绍了Go语言中的函数类型概念及应用,展示了如何定义函数类型并将其用于变量定义,进而调用符合特定签名的函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

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

9ed034ea6b429430a0a01c16973cffd8.png

说明如下: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)

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值