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() 的时候取出

相关推荐
呆萌很3 小时前
【GO】指针练习题
golang
cch89186 小时前
PHP vs Go:Web开发选谁更胜一筹?
前端·golang·php
想搞艺术的程序员6 小时前
Go map 核心黑魔法:tophash 标记位的极致复用与性能跃升
golang·源码分析·性能
呆萌很9 小时前
【GO】函数创建和使用
golang
echome88811 小时前
Go 语言并发编程:Goroutine 与 Channel 实战指南
后端·golang
风向决定发型丶12 小时前
Java 线程池 vs Go GMP
java·开发语言·golang
伐尘13 小时前
【图形学】CS:GO 的 “Uber 着色器” 是啥?
开发语言·golang·着色器
FJW02081413 小时前
什么是Go语言?云原生为什么要学Go?
开发语言·云原生·golang
人间打气筒(Ada)13 小时前
「码动四季·开源同行」golang:负载均衡如何提高系统可用性?
算法·golang·开源·go·负载均衡·负载均衡算法