在Go中函数也是一种变量,我们可以通过type来定义它,它的类型就是所有拥有相同的参数,相同的返回值的一种类型

type typeName func(input1 inputType1 , input2 inputType2 [, ...]) (result1 resultType1 [, ...])

函数作为类型到底有什么好处呢?那就是可以把这个类型的函数当做值来传递,请看下面的例子

package mainimport "fmt"type testInt func(int) bool // 声明了一个函数类型func isOdd(integer int) bool {if integer%2 == 0 {return false}return true
}func isEven(integer int) bool {if integer%2 == 0 {return true}return false
}// 声明的函数类型在这个地方当做了一个参数func filter(slice []int, f testInt) []int {var result []intfor _, value := range slice {if f(value) {result = append(result, value)}}return result
}func main(){slice := []int {1, 2, 3, 4, 5, 7}fmt.Println("slice = ", slice)odd := filter(slice, isOdd)    // 函数当做值来传递了fmt.Println("Odd elements of slice are: ", odd)even := filter(slice, isEven)  // 函数当做值来传递了fmt.Println("Even elements of slice are: ", even)
}

函数当做值和类型在我们写一些通用接口的时候非常有用,通过上面例子我们看到testInt这个类型是一个函数类型,然后两个filter函数的参数和返回值与testInt类型是一样的,但是我们可以实现很多种的逻辑,这样使得我们的程序变得非常的灵活。

转载于:https://www.cnblogs.com/yxhblogs/p/8727650.html

Go中函数作为值、类型传递。相关推荐

  1. c语言函数返回值类型必须,C++中函数类型与定义的函数返回值类型必须相同么?...

    C++中函数类型与定义的函数返回值类型必须相同么?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C++中函数类型与定义 ...

  2. 【Groovy】Groovy 动态语言特性 ( Groovy 中函数实参自动类型推断 | 函数动态参数注意事项 )

    文章目录 前言 一.Groovy 中函数实参自动类型推断 二.函数动态参数注意事项 三.完整代码示例 前言 Groovy 是动态语言 , Java 是静态语言 ; 本篇博客讨论 Groovy 中 , ...

  3. C++代码片段(一)萃取函数返回值类型,参数类型,参数个数

    函数的类型主要集中在以下几种 函数指针 函数对象,是一个类对象,内部重载的operator()函数是一个函数指针 lambda,匿名函数对象,同函数对象 function对象 后三者都是类对象,可以看 ...

  4. [转载]Asp.net MVC中Controller返回值类型

    Asp.net MVC中Controller返回值类型 在mvc中所有的controller类都必须使用"Controller"后缀来命名 并且对Action也有一定的要求: 必须 ...

  5. python中map函数返回值类型_python map函数

    from:https://www.cnblogs.com/AlwaysWIN/p/6202320.html 描述 map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序 ...

  6. python中map函数返回值类型_Python函数精解:map函数

    描述 map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表. 语法 m ...

  7. python中map函数返回值类型_Python中的map

    map函数会根据提供的函数对指定序列做映射. map函数的定义: map(function, sequence[, sequence, ...]) -> list 通过定义可以看到,这个函数的第 ...

  8. python中函数的参数类型( 位置参数、关键字参数、默认值参数和可变长度参数)

    目录 位置参数: 关键字参数: 默认值参数: 可变长度参数: 1.元组可变长度参数 : 2.字典可变长度参数: 附上练习代码: 位置参数: 实参与形参个数完全相同,按位置按顺序将实参传递给形参 def ...

  9. 小议C++中函数的参数的传递

    c++中为每一个函数都维护了一个运行栈(活动记录),这个栈存储了与该函数相关的一系列信息,包括函数中声明的变量,传递给函数的实际参数,以及该函数的返回地址等,使用gdb调试器可以清楚的看到这一切.当调 ...

  10. c语言sizeof返回数据类型,sizeof函数返回值类型

    #include int main(void) { printf("type int has a size of (1)sizeof不是函数,它只是一个操作符(operator). (2)s ...

最新文章

  1. php获得帮助类数据_PHP解析xml格式数据工具类示例
  2. 项目经理的十二条规则
  3. CNN-2: AlexNet 卷积神经网络模型
  4. 虚拟服务器关机返回用户信息,在Linux服务器关机前向用户显示一条自定义消息...
  5. SpringCloud集成lombox(eclipes工具)
  6. phpstorm 2019.1 mac
  7. 谷歌修复另一枚已遭利用的 Chrome 释放后使用0day,细节未公开
  8. think php union,UNION -ThinkPHP3.2.3完全开发手册 | AnSpoon.Com
  9. python 制作网页 选择题_python爬取网页电子课本图片,自己制作可打印的课本文件...
  10. VAssistX使用
  11. iir数字滤波器设计及matlab实现,终稿毕业论文:IIR数字滤波器设计及其MATLAB实现.docOK版(样例3)...
  12. smbrun - smbd和外部程序间的接口程序。
  13. 技能梳理24@stm32+阿里云+nbiot+dht11+bh1750+土壤湿度传感器+oled
  14. CDPSE-数据隐私解决方案工程师
  15. 衡量连通图连通性一些指标(r-reachable, r-robust)
  16. 豪华金色粒子动态logo展示AE视频模板
  17. 天然气压缩因子计算软件_媒体看陕鼓陕鼓天然气长输管线压缩机组投运
  18. 第六周学习周报20181015-20181021
  19. 控制手柄分体式滑环在船用起重机中的运用
  20. python输入一个英文句子_Python给定一个句子倒序输出单词以及字母的方法

热门文章

  1. 微软删除了人脸识别库,除了因为隐私,更重要的恐怕是因为性别歧视和种族主义...
  2. 【R语言实用技巧】类别变量的顺序自定义设置
  3. centos io 查看程序_快速免费搭建自己的带有直播、分销、团购、秒杀功能的小程序商城...
  4. Kendo UI 模板概述
  5. 孤荷凌寒自学python第八十天开始写Python的第一个爬虫10
  6. ASP.NET理论知识及面试题
  7. Spring Cloud config之一:分布式配置中心config server介绍
  8. 2016.5.10(编写Java无脚本的JSP页面)
  9. 转:JavaScript函数式编程(一)
  10. visual studio 2013连接Oracle 11g并获取数据:(一:环境搭建)