当前位置: 首页 > 面试题库 >

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

伯庆
2023-03-14
问题内容

如果我这样做:

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

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



 类似资料:
  • 假设有一个切片中有整数。我们声明了一个包含整数值的变量,然后我必须在不使用for循环的情况下从该切片中找到值。 使用for循环时,我会这样做:- 我们如何在不使用for循环的情况下做同样的事情

  • 问题内容: 我想知道是否可以在Go中为未知数量的变量定义函数。 像这样 我想对任意数量的输入进行泛化。 问题答案: 据我所知,您已经了解了很多,但是语法是。见规格: 给定功能并调用 在Greeting中,将具有价值

  • 我试图在反应应用程序中显示时间,并希望以12小时的格式显示。 我编写了一个函数,如果小时数显示为13或以上,则删除“12”。我想将该函数传递到setState,但仍然会得到一个语法错误。 我希望看到下午1:31,但我只是在setState行中出现了语法错误。我无法忘记这一点。 除此之外,我在之前的状态下如何通过?

  • 例如,我在golang中进行了以下测试: 如果我尝试构建它,我会收到以下内容: 有没有办法让编译器内联?如果是,是否有任何方法可以内联映射迭代?

  • 我想使用一个模板函数扩展默认的Golang模板函数,该模板函数呈现另一个Golang模板,而该模板也应该可以访问相关函数。 下面的演示案例应该创建一个< code>include模板函数,该函数呈现一个给定的模板,该模板也可以包含相同的< code>include函数。然而,这个例子(理所当然地)引发了一个初始化周期错误。 Golang 模板函数是否可以在引用自身时渲染另一个模板? https:/

  • 我的问题是:为什么调用不更快或更好,从而更可取?