推迟当前值

Key*_*rys -2 go

我想使用 defer 和函数参数中参数的最新值来调用该函数。我怀疑运行这段代码:

package main

import (
    "fmt"
)

func main() {
    s := "ABC"
    
    defer fmt.Println(s)
    s = "DEF"
}
Run Code Online (Sandbox Code Playgroud)

我会得到DEF。但我得到的是ABC。有什么办法可以得到DEF吗?

Jim*_*imB 5

围绕要捕获的变量创建一个闭包:

https://play.golang.org/p/W4xt_KSOJNj

s := "ABC"

defer func() {
    fmt.Println(s)
}()
s = "DEF"
Run Code Online (Sandbox Code Playgroud)