函数签名

定义

函数类型 又叫 函数签名 , 一个函数 的类型就是函数定义首行去掉函数名、参数名和{,可以 使用 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定义函数类型相关推荐

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

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

  2. typedef定义函数类型的用法

    typedef定义函数类型的用法 最近在CodeProject上看了段关于COM in plain C项目的代码,其中的一段关于typedef使用的代码一时让人有点模糊,代码如下: typedef l ...

  3. 使用typedef语句定义函数类型和函数指针

    首先我们要先明白一个概念,函数名是不是指针?也就是说一个函数名可不可以代表一个地址?以及什么是函数类型? 经过查找,函数名就是一个指针,但是意义是不一样的,如同于数组a[],a和&a其实都是一 ...

  4. typedef定义函数类型

    本文转载于:http://www.2cto.com/kf/201206/136745.html 最近在看posix实时信号时,遇到一处函数是如此定义的: typedef void sigfunc_rt ...

  5. Golang | 优雅地定义枚举类型

    不失优雅地定义枚举类型 枚举实际上是一种派生地数据类型,我们一般用来定义若干常量的集合.我们最常举的例子就是一周七天这种,它是最典型的使用枚举来定义的.枚举是一种特殊使用的常量,Go语言中定义枚举需要 ...

  6. matlab如何定义函数类型,Matlab如何定义函数?Matlab定义函数的方法

    Matlab是一款著名的商业数学软件,它的功能十分强大,我们常常会使用它解决一些数学难题.但是刚开始使用它的时候经常会遇到一些难题,比如Matlab如何定义函数,如果你不知道的话,赶紧看看小编整理的M ...

  7. 关于C语言static定义函数类型的具体解释

    内部函数和外部函数 函数一旦定义后就可被其它函数调用.   但当一个源程序由多个源文件组成时,   在一个源文件中定义的函数能否被其它源文件中的函数调用呢?为此,C语言又把函数分为两类: 一.内部函数 ...

  8. Go语言的type func()用法 | type func() 自定义函数类型

    文章目录 一.前置基础 1. go 函数基础 2. 函数签名 二.Go语言的type func()用法 | type func() 自定义函数类型 1. golang通过type定义函数类型 一.前置 ...

  9. go type func() 自定义函数类型

    @ 目录 因看不懂 go 中的自定义函数类型,看了https://www.jianshu.com/p/431abe0d2ed5 理解了不少,特此搬运到自己博客 在看golang 的http服务部分代码 ...

最新文章

  1. 凯明MAE被超越了?字节跳动iBOT刷新十几项SOTA
  2. ngx_http_lua_inject_socket_tcp_api函数代码注释
  3. 00-elasticsearch的pom文件
  4. 大连a货翡翠,东莞a货翡翠
  5. 实验七:Xen环境下cirrOS的安装配置
  6. html语言创建无序列表的标记是,【HTML】 三、文档设置标记
  7. 微信手机 WeOS 的可行性到底有多大?
  8. js中substr,substring,indexOf,lastIndexOf,split 的用法
  9. arduino无源蜂鸣器歌曲编码_Arduino 蜂鸣器音乐代码转化程序开发
  10. python基础学习--猜拳游戏
  11. 第三章 集合的基本概念和运算
  12. 使用latex撰写Elsevier双栏论文,表格标题caption左对齐问题
  13. 真正的Windows XP SP2上海政府版
  14. 机器人操作系统入门(一)ROS简介
  15. android 图形平移 镜子效果 倒影效果
  16. python输入三角形三条边长_python问题:输入三角形的三条边a,b,c,判断此三边是否可以构成三角形。等边、等腰、直角三角形?...
  17. java人事管理系统
  18. 富士康贫血100天:40万员工人均到手工资1932元
  19. SUST OJ P5502
  20. 结构化数据丨Python爬虫基础入门系列(7)

热门文章

  1. 堡垒之夜诉苹果案后,应用程序开发商正开发新软件规避“苹果税”
  2. Cypress UI自动化测试框架学习(5)-命令大全
  3. ios如何解除dns被劫持_iOS - DNS劫持
  4. 浅析MPEG-1音视频标准,带你深入浅出理解MPEG-1压缩原理
  5. jango使用xlwt时单元格控制
  6. 为什么很多人消失在朋友圈
  7. 黑河学院计算机技术新生名单,2021年黑河学院有几个校区,大一新生在哪个校区...
  8. 北京奥运会门票价格确定 开幕式票价最低200元
  9. python中替换字符串中字符_python替换字符串中的某个字符
  10. 新博安卓培训的第一天