defer和defer func执行区别

Go 复制代码
package main

import "fmt"

//63

func F63(n int) func() int {
	return func() int {
		n++
		return n
	}
}

// 最终768
func main() {
	f := F63(5)
	defer func() {
		fmt.Println("结果。。。。", f()) //只是注册一下函数  先进入最后执行 计算为8
	}()

	defer fmt.Println("结果。。", f()) //会先计算结果然后压入栈中 计算为6

	i := f() //计算为7
	fmt.Println("结果。。。", i)
}

最终结果 678

解析:知识点:匿名函数、defer()。defer() 后面的函数如果带参数,会优先计算参数,并将结果存储在栈中,到真正执行 defer() 的时候取出

相关推荐
迷茫运维路24 分钟前
云枢运维管理系统
运维·golang·kubernetes·gin·casbin
jieyucx1 小时前
Go 语言运算符与控制台输入输出详解
开发语言·后端·golang
userxxcc4 小时前
Waigo是用“Golang+Web”写的“视图窗口+稳定服务”的桌面端(Win、Mac、Ubuntu)多功能程序基座。开箱即用但有一定上手门槛。
javascript·golang·桌面应用基座·wails3
geovindu4 小时前
go: Prototype Pattern
开发语言·设计模式·golang·原型模式
codeejun5 小时前
每日一Go-55、分布式 ID 生成(雪花算法 / Segment / Redis / DB)
数据库·分布式·golang
Tomhex14 小时前
Go容易出错的地方总结
golang
techdashen19 小时前
Go 标准库 JSON 包迎来重大升级:encoding/json/v2 实验版来了
开发语言·golang·json
银色火焰战车21 小时前
浅析golang中的垃圾回收机制(GC)
java·jvm·golang
jieyucx1 天前
Go 语言零基础入门:编写第一个 Hello World 程序
开发语言·后端·golang
jieyucx1 天前
Go 语言基础语法:变量、常量与数据类型详解
开发语言·后端·golang