博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GO学习笔记:函数作为值、类型
阅读量:5372 次
发布时间:2019-06-15

本文共 1131 字,大约阅读时间需要 3 分钟。

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

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

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

  package main

  import "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 []int

  for _, 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/pengpeng1208/p/9713468.html

你可能感兴趣的文章
访问iPhone通讯录的问题
查看>>
【转】Hadoop集群作业调度算法
查看>>
图片加水印文字,logo。生成缩略图
查看>>
什么是事件
查看>>
[洛谷P3391]【模板】文艺平衡树(Splay)
查看>>
Codeforces Round #295 (Div. 2)B - Two Buttons BFS
查看>>
HDU 1695 GCD 容斥
查看>>
简单计算几何 hdu-4491 Windmill Animation
查看>>
《Linux/Unix系统编程手册》读书笔记 目录
查看>>
常用SQLSERVER语句(死锁、表记录数、外键、表备注)
查看>>
JavaScript PHP 通过URLEncode字串判断其编码是UTF-8还是GBK
查看>>
MVC Tutorial Movie DIY
查看>>
接口继承与实现继承
查看>>
爬虫入门之Requests模块学习(四)
查看>>
匿名函数
查看>>
Android Wear开发 - 入门指引 - Eclipse开发平台搭建
查看>>
linux核心版本号的说明
查看>>
linux环境下编码的问题
查看>>
96. Unique Binary Search Trees
查看>>
关于DS12C887 以外部RAM方式访问
查看>>