一尘不染

在golang函数中引用var是否正确?

go

如果我这样做:

func main() {
  foo := 1
  go func() {
    fmt.Println(foo)
  }()
}

在那个func里面引用foo是错误的吗?


阅读 306

收藏
2020-07-02

共1个答案

一尘不染

很好,只有在上下文变化时才需要注意(在局部指针变量的情况下):

package main

import (
    "errors"
    "fmt"
)

func test() {
    defer func() { fmt.Println(1) }()
    defer func() { fmt.Println(2) }()
    defer func() { fmt.Println(3) }()
}

func main() {
    test()
    err := errors.New("error 1")
    defer func() { fmt.Println(err) }()
    err = errors.New("error 2")
}

还请参见:https :
//www.goinggo.net/2014/06/pitfalls-with-closures-in-
go.html

2020-07-02