Go 延迟当前值

Go 延迟当前值,go,Go,我想用函数参数中参数的最新值使用defer调用函数。 我怀疑运行此代码: package main import ( "fmt" ) func main() { s := "ABC" defer fmt.Println(s) s = "DEF" } 我将获得DEF。但我得到的是ABC。是否有任何方法可以获取DEF?围绕要捕获的变量创建一个闭包: …或将指向变量的指针传递到延迟调用中。在这

我想用函数参数中参数的最新值使用defer调用函数。 我怀疑运行此代码:

package main

import (
    "fmt"
)

func main() {
    s := "ABC"
    
    defer fmt.Println(s)
    s = "DEF"
}

我将获得DEF。但我得到的是ABC。是否有任何方法可以获取DEF

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


…或将指向变量的指针传递到延迟调用中。在这种情况下,指针的值将在准备延迟调用的参数时进行计算,调用本身将使用该计算的地址访问变量的内容。在这个玩具示例中,但在一般情况下,当您控制要调用的函数时,这可能会以更容易理解的方式工作,IMO。
s := "ABC"

defer func() {
    fmt.Println(s)
}()
s = "DEF"