25. 函数值 函数是函数也是值

作者: 厚土火焱 | 来源:发表于2017-08-17 11:44 被阅读71次

在go语言中,函数可以作为返回值使用,也可以作为参数使用。
比如

return math.Sqrt(x*x + y*y)
compute(math.Pow)

这样的用法,在“map字典测试用例”中已经见过了。下面再看一个相对简单的示例

package main

import (
    "fmt"
    "math"
    "reflect"
)

func compute(fn func(float64, float64) float64) float64  {
    return fn(3, 4)
}
func main() {
    hypot := func(x, y float64) float64 {
        return math.Sqrt(x*x + y*y)     //math.Sqrt作为返回值使用
    }
    fmt.Println(hypot(3, 4))
    fmt.Println(compute(hypot))
    fmt.Println(compute(math.Pow))  //math.Pow作为参数使用

    fmt.Println(reflect.TypeOf(hypot))      //打印hypot的数据类型
}

我们可以看到 hypot(3, 4) 和 compute(hypot) 是相同的执行结果。它们执行的都是 hypot 中的运算。
hypot究竟是什么类型呢?最后一行代码可以打印出 hypot 的类型来。
我们一起看一下完整的运行结果

5
5
81
func(float64, float64) float64

第三个运行结果,是math.Pow使用了 compute 函数内提供的参数(3, 4),进而求得了 3 的 4 次方。即 3 * 3 * 3 * 3 = 81

相关文章

  • 25. 函数值 函数是函数也是值

    在go语言中,函数可以作为返回值使用,也可以作为参数使用。比如 这样的用法,在“map字典测试用例”中已经见过了。...

  • 菜鸡学Swift3.0 10.函数

    1. 函数的定义 func 函数名(参数)-> 返回值类型 { 函数体 } 函数名( 参数名:参数值 ) 2. 函...

  • 函数式编程

    函数式编程   在数学中,函数是不同数值之间的特殊关系:每一个输入值返回且只返回一个输出值。   函数式编程强调函...

  • Lesson 3 SAS实用函数

    Lesson 3 SAS实用函数 (1)与数值有关的函数 数值运算 数值舍入 (2)与统计有关的函数 统计描述 函...

  • dnorm pnorm qnorm rnorm详解

    dnorm 返回值是正态分布概率密度函数值,比如dnorm(z)则表示:标准正态分布密度函数f(x)在x=z处的函...

  • 变分原理

    变分是求取泛函极值的方法,泛函就是以函数为自变量,实数或者复数为函数值的特殊的函数。泛函在描述自然中应用极广,比如...

  • MySQL~操作表函数

    一、数值型函数 1、ABS函数--) 绝对值函数 绝对值函数ABS(x)返回x的绝对值,正数的绝对值是其本身,负数...

  • 插值与多项式逼近

    插值与多项式逼近 关于插值,是利用已知函数上的点及其函数值,对某一点求函数值。数学图像上,表现为两个函数形状的相似...

  • ES6(五)—— 函数

    函数 函数(函数方法更新【默认值、不确定参数、箭头函数】) Default Parameters —— 如何处理函...

  • Day10总结

    匿名函数 普通函数: def 函数名(参数列表):函数体 匿名函数: 函数名 = lambda:参数列表:返回值函...

网友评论

    本文标题:25. 函数值 函数是函数也是值

    本文链接:https://www.haomeiwen.com/subject/ynugrxtx.html