golang通过type定义函数类型
函数签名
定义
函数类型 又叫 函数签名 , 一个函数 的类型就是函数定义首行去掉函数名、参数名和{,可以 使用 fmt.Printf 的”%T”格式化参数打印函数的类型。
函数类型相同
两个函数类型相同的条件是:拥有相同的形参列表和返回值列表(列表元素的次序、个数和类型都相同),形参名可以不同 。 以下 3 个函数的函数类型完全一样。
func add (a , b int) int { return a + b }
func sub (c int, d int) int { return c - d }
func mul (e int, f int) int { return e * f }
- 举个栗子
新建test.go
package main
import "fmt"func add(a, b int) int { return a + b }
func sub(c int, d int) int { return c - d }
func mul(e int, f int) int { return e * f }func main() {fmt.Printf("%T\n", add)fmt.Printf("%T\n", sub)fmt.Printf("%T\n", mul)
}
执行go run test.go输出结果如下:
func(int, int) int
func(int, int) int
func(int, int) int
通过type定义函数类型
通过 type 可以定义函数类型,格式如下
type typeName func(arguments) retType
函数类型也是一种类型,故可以将其定义为函数入参,在 go 语言中函数名可以看做是函数类型的常量,所以我们可以直接将函数名作为参数传入的函数中。
package mainimport "fmt"func add(a, b int) int {return a + b
}//sub作为函数名可以看成是 op 类型的常量
func sub(a, b int) int {return a - b
}//定义函数类型 op
type op func(a, b int) int//形参指定传入参数为函数类型op
func Oper(fu op, a, b int) int {return fu(a, b)
}func main() {//在go语言中函数名可以看做是函数类型的常量,所以我们可以直接将函数名作为参数传入的函数中。aa := Oper(add, 1, 2)fmt.Println(aa)bb := Oper(sub, 1, 2)fmt.Println(bb)
}
golang通过type定义函数类型相关推荐
- 返回值类型与函数类型不匹配_golang基础语法,定义函数类型 为已存在的数据类型起别名...
简介 在 GO 语言中还有另外一种定义使用函数的方式,就是函数类型,所谓的函数类型就是将函数作为一种类型可以用来定义变量,这种用法类似于前面我们讲过的 int ,float64,string 等类型, ...
- typedef定义函数类型的用法
typedef定义函数类型的用法 最近在CodeProject上看了段关于COM in plain C项目的代码,其中的一段关于typedef使用的代码一时让人有点模糊,代码如下: typedef l ...
- 使用typedef语句定义函数类型和函数指针
首先我们要先明白一个概念,函数名是不是指针?也就是说一个函数名可不可以代表一个地址?以及什么是函数类型? 经过查找,函数名就是一个指针,但是意义是不一样的,如同于数组a[],a和&a其实都是一 ...
- typedef定义函数类型
本文转载于:http://www.2cto.com/kf/201206/136745.html 最近在看posix实时信号时,遇到一处函数是如此定义的: typedef void sigfunc_rt ...
- Golang | 优雅地定义枚举类型
不失优雅地定义枚举类型 枚举实际上是一种派生地数据类型,我们一般用来定义若干常量的集合.我们最常举的例子就是一周七天这种,它是最典型的使用枚举来定义的.枚举是一种特殊使用的常量,Go语言中定义枚举需要 ...
- matlab如何定义函数类型,Matlab如何定义函数?Matlab定义函数的方法
Matlab是一款著名的商业数学软件,它的功能十分强大,我们常常会使用它解决一些数学难题.但是刚开始使用它的时候经常会遇到一些难题,比如Matlab如何定义函数,如果你不知道的话,赶紧看看小编整理的M ...
- 关于C语言static定义函数类型的具体解释
内部函数和外部函数 函数一旦定义后就可被其它函数调用. 但当一个源程序由多个源文件组成时, 在一个源文件中定义的函数能否被其它源文件中的函数调用呢?为此,C语言又把函数分为两类: 一.内部函数 ...
- Go语言的type func()用法 | type func() 自定义函数类型
文章目录 一.前置基础 1. go 函数基础 2. 函数签名 二.Go语言的type func()用法 | type func() 自定义函数类型 1. golang通过type定义函数类型 一.前置 ...
- go type func() 自定义函数类型
@ 目录 因看不懂 go 中的自定义函数类型,看了https://www.jianshu.com/p/431abe0d2ed5 理解了不少,特此搬运到自己博客 在看golang 的http服务部分代码 ...
最新文章
- 凯明MAE被超越了?字节跳动iBOT刷新十几项SOTA
- ngx_http_lua_inject_socket_tcp_api函数代码注释
- 00-elasticsearch的pom文件
- 大连a货翡翠,东莞a货翡翠
- 实验七:Xen环境下cirrOS的安装配置
- html语言创建无序列表的标记是,【HTML】 三、文档设置标记
- 微信手机 WeOS 的可行性到底有多大?
- js中substr,substring,indexOf,lastIndexOf,split 的用法
- arduino无源蜂鸣器歌曲编码_Arduino 蜂鸣器音乐代码转化程序开发
- python基础学习--猜拳游戏
- 第三章 集合的基本概念和运算
- 使用latex撰写Elsevier双栏论文,表格标题caption左对齐问题
- 真正的Windows XP SP2上海政府版
- 机器人操作系统入门(一)ROS简介
- android 图形平移 镜子效果 倒影效果
- python输入三角形三条边长_python问题:输入三角形的三条边a,b,c,判断此三边是否可以构成三角形。等边、等腰、直角三角形?...
- java人事管理系统
- 富士康贫血100天:40万员工人均到手工资1932元
- SUST OJ P5502
- 结构化数据丨Python爬虫基础入门系列(7)
热门文章
- 堡垒之夜诉苹果案后,应用程序开发商正开发新软件规避“苹果税”
- Cypress UI自动化测试框架学习(5)-命令大全
- ios如何解除dns被劫持_iOS - DNS劫持
- 浅析MPEG-1音视频标准,带你深入浅出理解MPEG-1压缩原理
- jango使用xlwt时单元格控制
- 为什么很多人消失在朋友圈
- 黑河学院计算机技术新生名单,2021年黑河学院有几个校区,大一新生在哪个校区...
- 北京奥运会门票价格确定 开幕式票价最低200元
- python中替换字符串中字符_python替换字符串中的某个字符
- 新博安卓培训的第一天