在golang func中引用变量是否正确?

在golang func中引用变量是否正确?,go,Go,如果我这样做: func main() { foo := 1 go func() { fmt.Println(foo) }() } 在该func中引用foo是否错误?这很好,只是在更改上下文时需要注意(对于局部指针变量): 另请参见: package main import ( "errors" "fmt" ) func test() { defer func() { fmt.Println(1) }() defer func() {

如果我这样做:

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

在该func中引用foo是否错误?

这很好,只是在更改上下文时需要注意(对于局部指针变量):

另请参见:

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")
}