首页 > 其他分享 >理解Golang的闭包

理解Golang的闭包

时间:2023-10-31 21:14:34浏览次数:34  
标签:闭包 func 函数 Golang 理解 str string suffix

闭包是指一个函数值(function value),它可以引用其函数体之外的变量

闭包代码示例

func makeSuffix() func(str string) string {
	var suffix = ".jpg"
	return func(str string) string {
		if strings.HasSuffix(str, suffix) {
			return str
		} else {
			// 引用函数体之外的变量suffix
			return str + suffix
		}
	}
}

func main() {
	// 创建闭包函数
	closure := makeSuffix()
	// 调用闭包函数
	fmt.Println(closure("this"))
	fmt.Println(closure("that.jpg"))
}

个人理解:通过变量+函数function巧妙地调用了函数(在不修改函数function的条件下)

 

标签:闭包,func,函数,Golang,理解,str,string,suffix
From: https://www.cnblogs.com/ashet/p/17801512.html

相关文章

  • 【转载】 CPU漏洞 —— 一步一步理解CPU芯片漏洞:Meltdown与Spectre
    原文:https://www.freebuf.com/articles/system/159811.html 参考:https://blog.csdn.net/xy010902100449/article/details/128366616 ------------------------------------------------   ( 详细内容请访问原文地址:https://www.freebuf.com/articles/system/159811......
  • 光波导中模式理解-2
    光波导中模式理解-2(含脚本实例)参考文献[1]H.Wenzel,P.Crump,J.Fricke,P.ResselandG.Erbert,"SuppressionofHigher-OrderLateralModesinBroad-AreaDiodeLasersbyResonantAnti-Guiding,"inIEEEJournalofQuantumElectronics,vol.49,no.12,pp.11......
  • 理解 JavaScript 的 async/await
    1.async和await在干什么任意一个名称都是有意义的,先从字面意思来理解。async是“异步”的简写,而await可以认为是asyncwait的简写。所以应该很好理解async用于申明一个function是异步的,而await用于等待一个异步方法执行完成。另外还有一个很有意思的语法规定,awai......
  • Golang中log日志包的使用(转)
    1.前言作为后端开发人员,日志文件记录了发生在操作系统或其他软件运行时的事件或状态。技术人员可以通过日志记录进而判断系统的运行状态,寻找导致系统出错、崩溃的成因等。这是我们分析程序问题常用的手段。2.log包介绍在Golang中记录日志非常方便,Golang提供了一个简单的日志......
  • MQ迁移的学习与理解
    生产者是topic,消费者是group一个topic可以对应多个group,每个group可以对应一个或者多个tag配置文件更改topic与group之后会自动注册到阿里云rocketmq,不需要手动注册。 ......
  • 【面试题】你理解中JS难理解的基本概念是什么?
    作用域与闭包作用域作用域是当前的执行上下文,值和表达式在其中“可见”或可被访问。如果一个变量或表达式不在当前的作用域中,那么它是不可用的。作用域也可以堆叠成层次结构,子作用域可以访问父作用域,反过来则不行。————MDN作用域最重要的特点是:子作用域可以访问父作用域,反之则......
  • golang flag的使用
    packagemainimport( "backend-service-api-scripts/utils" "database/sql" "flag" "fmt" "log" "os")var( db*sql.DB=utils.ConnectData()//这里的连接数据库需要根据数据库本身的情况进行更改 courseId......
  • 打印空心金字塔_Golang实现
    *******......
  • 深入理解 MySQL 中的锁和MVCC机制
    文章目录锁:数据访问的保护者1.了解锁的基本概念2.锁的使用场景3.示例:MySQL中的锁MVCC:多版本并发控制1.MVCC的工作原理2.MVCC的优点3.示例:MySQL中的MVCC如何选择合适的锁和MVCC1.确定隔离级别2.避免过度使用锁3.监控和调优结语......
  • 深入理解多线程编程和 JVM 内存模型
    文章目录1.理解进程和线程的概念进程(Process)线程(Thread)2.理解竞态条件和死锁竞态条件(RaceCondition)死锁(Deadlock)3.JVM内存模型堆(Heap)栈(Stack)方法区(MethodArea)本地方法栈(NativeMethodStack)PC寄存器(ProgramCounterRegister)垃圾回收4.常见的多线程编程模式生产者-消费者......