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

Golang中的函数声明

刘升
2023-03-14
问题内容

似乎有两种不同的方法可以在Golang中声明函数,如下所示:

package main
import "fmt"
var someFunc = func(arg string) {
    fmt.Println(arg)
}
func main() {
    someFunc("Hello")
}

以上作品。但是,以下方法不起作用:

package main
import "fmt"
var someFunc = func(arg string) {
    fmt.Println(arg)
}
var main = func() {
    someFunc("Hello")
}

它会抱怨:

runtime.main: undefined: main.main

那么func someFunc()和之间有什么区别var someFunc = func()

我发现它的原因可能也是因为我也编写了许多Javascript。在Go中,似乎很少有人看到像这样的函数var someFunc=func()。在这两个中,我们可以说哪个比另一个更正确吗?


问题答案:

当你做

var someFunc = func(arg string) {}

您正在为该somefunc变量分配匿名函数。您也可以这样写:

somefunc := func(arg string) {}

创建函数的另一种方法是创建一个命名函数:

func somefunc(arg string) {}

命名函数只能在顶层声明,而匿名函数可以在任何地方声明。并main有特殊的意义,必须有所谓的命名函数mainmain包,这就是为什么你有在第二种情况下的错误。



 类似资料:
  • Go 语言和 C 语言一样也有函数的概念,Go 语言中函数除了定义格式和不用声明以外,其它方面几乎和 C 语言一模一样,格式: func 函数名称(形参列表)(返回值列表){ 函数体; } 无参数无返回值函数 func say() { fmt.Println("Hello World!!!") } 有参数无返回值函数 func say(name string) { fmt

  • 5.1. 函数声明 函数声明包括函数名、形式参数列表、返回值列表(可省略)以及函数体。 func name(parameter-list) (result-list) { body } 形式参数列表描述了函数的参数名以及参数类型。这些参数作为局部变量,其值由参数调用者提供。返回值列表描述了函数返回值的变量名以及类型。如果函数返回一个无名变量或者没有返回值,返回值列表的括号是可以省略的。如

  • 我不明白发生了什么事。我严格遵循所有的微软文档,事实上甚至不使用任何我自己的脚本/代码。首先,我按照他们的文档创建Python函数。成功了。https://docs.microsoft.com/en-us/azure/azure-functions/create-first-function-cli-python?tabs=azure-cli、cmd、browser使用命令行工具将Azure功能连

  • golang 里面有两个保留的函数: init 函数(能够应用于所有的 package) main 函数(只能应用于 package main) 这两个函数在定义时不能有任何的参数和返回值 go 程序会自动调用 init() 和 main(),所以你 不能 在任何地方调用这两个函数 package main 必须包含一个 main 函数,但是每个 package 中的 init 函数都是可选的 一

  • 问题内容: 函数声明如何处理? 此示例在Chrome和Firefox中产生不同的输出。Chrome输出,而FF输出。 问题答案: 当问这个问题时,ECMAScript5(ES5)盛行。在ES5的严格模式下,函数声明不能​​嵌套在一个块中,如问题所示。在非严格模式下,结果是不可预测的。不同的浏览器和引擎针对如何处理块内的函数声明实现了自己的规则。 许多浏览器都支持ECMAScript2015(ES2

  • 问题内容: 我有一个类似这样的模块: …而且我有一个类似这样的文件: 构建文档时,我得到一个带有如下代码段的html文件: mymodule.foobar。 foob​​ar = ‘这里有些长而丑陋的正则表达式’ 额外的文档在这里 mymodule。 myfunc ( val =’这里有些长而丑陋的正则表达式’ ) 等等等等等等 基于这个帖子),我认为可以通过将模块更改为以下内容来对其进行更改: