在 golang 中同一结构中的 func 中引用另一个字段

4 struct go

我有一个看起来像这样的结构:

type Job struct {
    Action  func()
    Cron    string
}
Run Code Online (Sandbox Code Playgroud)

那么对于这个结构体的实例,实现中的代码是否有可能Action获得对 的引用Cron?谢谢。

fuz*_*fuz 5

使用闭包创建Action函数:

\n\n
func MakeAction(job *Job) func() {\n    return func() {\n        // function that uses the variable job\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

MakeAction您可以像这样使用该函数:

\n\n
j := &Job{ nil, "foo" }\nj.Action = MakeAction(j)\n
Run Code Online (Sandbox Code Playgroud)\n\n

请注意,当有人复制结构体Job\xe2\x80\x94 时,这可能会以意想不到的方式运行,创建的闭包内的引用MakeAction()仍将指向原始实例(而不是副本)。

\n