golang之匿名函数
package main import "fmt" /* squares返回一个匿名函数
* 该匿名函数每次调用返回下一个数的平方
* func name(parameter-list) (result-list) {
* body
* }
*/ func squares() func() int {
var x int
return func() int {
x++
return x * x
}
} func main() {
f := squares() //返回函数指针
fmt.Printf("%v\n", f)
fmt.Println(f())
fmt.Println(f())
fmt.Println(f())
fmt.Println(f())
fmt.Printf("%v\n", f)
}
执行结果:
0x401620 0x401620
通过这个例子, 我们看到变量的生命周期不由它的作用域决定:squares返回后, 变量x仍然隐式的存在于f中;
golang之匿名函数的更多相关文章
- Golang之匿名函数和闭包
Go语言支持匿名函数,即函数可以像普通变量一样被传递或使用. 使用方法如下: main.go package main import ( "fmt" ) func main() { ...
- golang之匿名函数结合defer
defer语句中的函数会在return语句更新返回值变量后再执行,又因为在函数中定义的匿名函数可以访问该函数包括返回值变量在内的所有变量,所以,对匿名函数采用defer机制,可以使其观察函数的返回值. ...
- golang中匿名函数的应用-回调函数-闭包
package main import ( "fmt" "strconv" ) type funcType func(int, int) int // 自定义函 ...
- Golang函数-匿名函数与闭包函数
Golang函数-匿名函数与闭包函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Golang匿名函数
概念所谓匿名函数,就是没有名字的函数匿名函数的两种使用方式一.在定义匿名函数的时候就可以直接使用(这种方式只使用一次) package main import ( "fmt" ) ...
- Golang中的匿名函数(闭包)
GO语言的匿名函数就是闭包,以下是<GO语言编程>中对闭包的解释 基本概念闭包是可以包含自由(未绑定到特定对象)变量的代码块,这些变量不在这个代码块内或者任何全局上下文中定义,而是在定义代 ...
- Golang闭包和匿名函数
1. 匿名函数 匿名函数就是没有函数名的函数,如下所示. func test() int { max := func(a, b int) int { if a > b { return a } ...
- GOLANG 匿名函数笔记
在函数内部,没有名字的函数,就是匿名函数 实现方法1: func main(){ a := "我是无参无返回值的匿名函数" x := func(){ //可以获取到匿名函数外部的变 ...
- golang中的匿名函数三种用法
package main import ( "fmt" "strconv" ) func main() { // 匿名函数的使用:方式1 f1 := func( ...
随机推荐
- sed(转)
第一部分:sed基础 1)简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内 ...
- Eclipse 快捷键操作和常用设置
自动提示功能:一般的关键字,都有提示内容 像syso 就是System.out.println();for 循环 等 它的快捷键是 (Alt+/) 格式化代码: 有时候代码写多了 比较乱的话可以用快捷 ...
- StudentSchema student实例数据库环境搭建
环境搭建 查看默认表空间和临时表空间 select tablespace_name from dba_tablespaces: 创建用户 并给用户设置默认表空间和临时表空间 SQL> creat ...
- Codeforces Round #256 (Div. 2/C)/Codeforces448C_Painting Fence(分治)
解题报告 给篱笆上色,要求步骤最少,篱笆怎么上色应该懂吧,.,刷子能够在横着和竖着刷,不能跳着刷,,, 假设是竖着刷,应当是篱笆的条数,横着刷的话.就是刷完最短木板的长度,再接着考虑没有刷的木板,,. ...
- C#数据绑定中,时间为空时显示时间为原始日期问题
这个问题一般出现在用实体时,实体的时间格式没有加?号.加了之后就默认为空,没有数据时不会为原始时间了.
- some knowledge t
NSNumber static 看下面例子 gCount可以在Person 文件中使用 在main 中不行 @property()括号中可以填的属性 国际化 OC中的快捷键操作 operation ...
- util 学习
const I = 3.4893589; console.log(Number.parseInt(I)); console.log(Number.parseFloat(I)); console.log ...
- Devpexpress 打印预览问题
devexpress 12 之前报表打印: XtraReports rp1 = new XtraReports(); rp1.ShowPreview(): 即可预览报表: devexpress 13 ...
- binaryTree:普通二叉树
#ifndef _Tree_H #define _Tree_H typedef int ElementType; typedef struct TreeNode { ElementType Eleme ...
- 不要伤害指针(1)--运算符&和*
原文转载地址:http://blog.csdn.net/sunchaoenter/article/details/6646001 增加自己的想法,作为笔记. 这里&是取地址运算符,*是间接运算 ...