匿名函数和字面量函数一样,

凡是可以使用字面量函数的地方,都可以用匿名函数代替。

这个和js中的匿名函数差不多吧。

package main

import "fmt"

var sum = func(a, b int) int {
	return a + b
}

func doinput(f func(int, int) int, a, b int) int {
	return f(a, b)
}

func wrap(op string) func(int, int) int {
	switch op {
	case "add":
		return func(a, b int) int {
			return a + b
		}
	case "sub":
		return func(a, b int) int {
			return a - b
		}
	default:
		return nil
	}
}

func main() {
	defer func() {
		if err := recover(); err!= nil {
			fmt.Println(err)
		}
	}()

	fmt.Println(sum(1, 2))
	re := doinput(func(x, y int) int {
		return x + y
	}, 1, 2)
	fmt.Printf("%d\n", re)
	opFunc := wrap("add")
	re = opFunc(2, 3)
	fmt.Printf("%d\n", re)

}

  

Go语言之匿名函数的更多相关文章

  1. [日常] Go语言圣经-匿名函数习题

    Go语言圣经-匿名函数1.拥有函数名的函数只能在包级语法块中被声明,通过函数字面量(function literal),我们可绕过这一限制,在任何表达式中表示一个函数值2.通过这种方式定义的函数可以访 ...

  2. python语言(五)匿名函数、读写excel、操作数据库、加密、redis操作

    一.匿名函数 递归:就是调用自己 def func(): num = int(input('num:')) if num % 2 ==0: print('是偶数') return else: func ...

  3. [日常] Go语言圣经-匿名函数习题2

    练习5.13: 修改crawl,使其能保存发现的页面,必要时,可以创建目录来保存这些页面.只保存来自原始域名下的页面.假设初始页面在golang.org下,就不 要保存vimeo.com下的页面. p ...

  4. Go匿名函数

    1.GO语言的匿名函数就是闭包 基本概念 闭包是可以包含自由(未绑定到特定对象)变量的代码块,这些变量不在这个代码块内或者任何全局上下文中定义,而是在定义代码块的环境中定义.要执行的代码块(由于自由变 ...

  5. Golang之匿名函数和闭包

    Go语言支持匿名函数,即函数可以像普通变量一样被传递或使用. 使用方法如下: main.go package main import ( "fmt" ) func main() { ...

  6. Golang中的匿名函数(闭包)

    GO语言的匿名函数就是闭包,以下是<GO语言编程>中对闭包的解释 基本概念闭包是可以包含自由(未绑定到特定对象)变量的代码块,这些变量不在这个代码块内或者任何全局上下文中定义,而是在定义代 ...

  7. Golang函数-匿名函数与闭包函数

    Golang函数-匿名函数与闭包函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  8. Go语言 - 函数 | 作用域 | 匿名函数 | 闭包 | 内置函数

    函数是组织好的.可重复使用的.用于执行指定任务的代码块.本文介绍了Go语言中函数的相关内容. 介绍 Go语言中支持函数.匿名函数和闭包,并且函数在Go语言中属于“一等公民”. 函数可以赋值给变量 函数 ...

  9. 【Go语言学习】匿名函数与闭包

    前言 入坑 Go 语言已经大半年了,却没有写过一篇像样的技术文章,每次写一半就搁笔,然后就烂尾了. 几经思考,痛定思痛,决定金盆洗手,重新做人,哦不,重新开始写技术博文. 这段时间在研究Go语言闭包的 ...

随机推荐

  1. Iterables vs. Iterators vs. Generators

    Reprinted from: Iterables vs. Iterators vs. Generators Occasionally I've run into situations of conf ...

  2. 【Android休眠】之PowerKey唤醒源实现【转】

    转自:https://blog.csdn.net/u013686019/article/details/53677531 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog ...

  3. Keepalived两节点出现双VIP情况及解决方法【原创】

    1.故障现象 俩台服务器keepalived的vip在俩台服务器同时出现 A:10.70.12.72 B:10.70.12.73 2.问题分析 1).先分析那台服务器在提供服务 A:10.70.12. ...

  4. ABP后台服务之作业调度Quartz.NET

    一.简介 Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活 ...

  5. 关于Mac的rootless问题

    由于在OS X 10.11版本添加了rootless,使得root用户在DOS命令下无法操作系统文件并提示无权限. 解决办法: 首先确认升级到最新版本 重新启动电脑,持续按住Command-R直到看见 ...

  6. Android-创建一个简单的用户接口-(补day2内容)

    如果按照之前的布局设置,那么输入框和按钮组件的大小就会是刚好满足它们的内容的.如图1. 图1.输入框和按钮宽度设置为”wrap_content” 这样的设置是可以满足按钮的,但不能满足输入框的要求,因 ...

  7. datepicker 属性设置 以及方法和事件

    DatePicker支持鼠标点选日期,同时还可以通过键盘控制选择: page up/down - 上一月.下一月 ctrl+page up/down - 上一年.下一年 ctrl+home - 当前月 ...

  8. python2x 和 python 3x的区别

    1,大环境: python2x: 大神贡献源码,这些源码有自己语言的特色,源码不规范,源码重复代码太多. python崇尚的是优美清晰简单. python3x: 龟叔重新整理,将源码规范化,简单化,统 ...

  9. [nodejs]er_bad_field_error NaN in where clause

    1 前言 nodejs 运行时,出现以下情况er_bad_field_error NaN in where clause. 2 分析 原来是userid = NAN传进来了,生成userid时出错了. ...

  10. [PHP]session的一些要点

    一.session_start([array $options=array()]) 1.只能在输出http头前启动此函数,因为如果需要改写sessid的键和值,需要在http报文头发出前就开始定义了: ...