• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Golang > 简单了解Go语言中函数作为值以及函数闭包的使用

简单了解Go语言中函数作为值以及函数闭包的使用

作者:goldensun 字体:[增加 减小] 来源:互联网

goldensun 通过本文主要向大家介绍了c语言传递闭包,闭包函数,javascript闭包函数,js闭包函数,php 闭包函数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

函数作为值

Go编程语言提供灵活性,以动态创建函数,并使用它们的值。在下面的例子中,我们已经与初始化函数定义的变量。此函数变量的目仅仅是为使用内置的Math.sqrt()函数。下面是一个例子:
package main

import (
   "fmt"
   "math"
)

func main(){
   /* declare a function variable */
   getSquareRoot := func(x float64) float64 {
      return math.Sqrt(x)
   }

   /* use the function */
   fmt.Println(getSquareRoot(9))

}
</div>
当上述代码被编译和执行时,它产生了以下结果:

3

</div>

函数闭包
Go编程语言支持匿名函数其可以作为函数闭包。当我们要定义一个函数内联不传递任何名称,它可以使用匿名函数。在我们的例子中,我们创建了一个函数getSequence()将返回另一个函数。该函数的目的是关闭了上层函数的变量i 形成一个闭合。下面是一个例子:
package main

import "fmt"

func getSequence() func() int {
   i:=0
   return func() int {
      i+=1
   return i 
   }
}

func main(){
   /* nextNumber is now a function with i as 0 */
   nextNumber := getSequence() 

   /* invoke nextNumber to increase i by 1 and return the same */
   fmt.Println(nextNumber())
   fmt.Println(nextNumber())
   fmt.Println(nextNumber())
  
   /* create a new sequence and see the result, i is 0 again*/
   nextNumber1 := getSequence() 
   fmt.Println(nextNumber1())
   fmt.Println(nextNumber1())
}
</div>
当上述代码被编译和执行时,它产生了以下结果:

1
2
3
1
2
</div>

</div>

您可能想查找下面的文章:

  • 深入理解Go语言中的闭包
  • 举例讲解Go语言中函数的闭包使用
  • 简单了解Go语言中函数作为值以及函数闭包的使用

相关文章

  • 创建第一个Go语言程序Hello,Go!
  • 深入理解Go语言中的Dispatcher
  • Go语言map字典用法实例分析
  • 简单讲解Go程序中使用MySQL的方法
  • golang中strconv.ParseInt函数用法示例
  • Go语言struct类型介绍
  • Go语言实现顺序存储的线性表实例
  • Go语言并发技术详解
  • 初步解读Golang中的接口相关编写方法
  • Ubuntu安装Go语言运行环境

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • go语言制作端口扫描器
    • go语言实现文件分割的方法
    • go语言实现顺序存储的栈
    • PHP与Go语言之间的通信详解
    • go语言实现抓取高清图片
    • Go中map数据类型3点小知识
    • Go语言中使用gorm小结
    • go语言通过odbc操作Access数据库的方法
    • Go语言实现的web爬虫实例
    • Golang最大递减数算法问题分析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有