• GO学习笔记:函数作为值、类型


      在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类型是一样的,但是我们可以实现很多种的逻辑,这样使得我们的程序变得非常的灵活。(编辑:雷林鹏 来源:网络)

  • 相关阅读:
    django高级应用
    python第六章模块
    python第五章函数
    python第四章文件操作
    python第三章数据类型
    python第二章python入门
    python第一章计算机基础
    Python全栈day 05
    Python全栈day 04
    mysql 消息表分区方案
  • 原文地址:https://www.cnblogs.com/pengpeng1208/p/9713468.html
Copyright © 2020-2023  润新知