Golang 中的函数声明

2024-03-19

在 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() and var someFunc = func()?

我发现这个的原因可能是因为我也编写了大量 Javascript。似乎在 Go 中,我很少看到人们声明这样的函数var someFunc=func()。这两者之中,我们能说哪一个更正确呢?


当你这样做时

var someFunc = func(arg string) {}

您正在将一个匿名函数分配给somefunc多变的。你也可以这样写:

somefunc := func(arg string) {}

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

func somefunc(arg string) {}

命名函数只能在顶层声明,而匿名函数可以在任何地方声明。和main有特殊含义,必须有一个名为的命名函数main in the main包,这就是为什么在第二种情况下出现错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Golang 中的函数声明 的相关文章

  • 设置 Let's encrypt with Go - 握手错误

    我正在尝试设置让我们在用 Go 编写的负载均衡器上进行加密 我尝试了自动和手动设置 但总是出错 该域正确指向我们的服务器 Digital Ocean 我什至可以从浏览器打开该网站而不会出现错误 而且 ssl 检查报告该域上没有错误 事实是
  • 代理 golang https

    我正在努力让一个人进来https www google com https www google com使用带有身份验证的代理 我已经传递了标头参数 代理授权 但代理服务器返回 需要代理身份验证 code package main impo
  • 是否可以使函数接受给定参数的多种数据类型?

    编写函数时 我必须声明输入和输出数据类型 如下所示 int my function int argument 是否可以声明我的函数接受 int bool 或 char 类型的变量 并且可以输出这些数据类型 non working examp
  • parseInt() 和 parseFloat() 之间的区别[重复]

    这个问题在这里已经有答案了 可能的重复 parseInt 和 parseFloat 之间的行为差 异 https stackoverflow com questions 9528433 behavior difference between
  • 如何从python字典中的给定名称获取键

    我有一个变量叫做 anime dict which contains a dictionary of lists of objects as shown below JI2212 Inu Yasha year 1992 rating 3 E
  • 如何替换 randomForest r 包中的引导步骤

    首先是一些背景信息 这在 stats stackexchange 上可能更有趣 在我的数据分析中 我尝试比较不同机器学习方法在时间序列数据上的性能 回归 而不是分类 例如 我训练了一个 Boosting 训练模型 并将其与随机森林训练模型
  • C++ 函数作为模板参数与参数传递

    在 C 中 有两种将一个函数传递给另一个函数的方法 这两种方法看起来是等效的 include
  • 隐藏包中未记录的函数 - 使用 .function_name?

    我需要在包中提供一些功能 但我不想导出它们或为它们编写文档 我只是将它们隐藏在另一个函数中 但它们需要可供多个函数使用 因此这样做会成为范围界定和维护问题 这样做的正确方法是什么 我的意思是他们是否需要特殊的名字 他们是否会去其他地方 R子
  • 在新窗口中打开谷歌地图。

    我创建了一个 Google Map API 我想在新选项卡 窗口 中打开它 我可以知道我的代码有什么问题吗 我可以打开新选项卡 但无法显示 Google 地图 下面是我的代码 谢谢 function newWindow var myLatl
  • 在一个函数中返回两个变量[重复]

    这个问题在这里已经有答案了 考虑以下代码 demo http jsfiddle net m59Fg function test var h Hello var w World return h w var test test alert t
  • golang - 省略 json 属性进行序列化的优雅方法

    我有一个用户结构 其中包含密码等敏感字段 type User struct UID string json uid binding required Password string json password binding require
  • 创建线程-传递参数

    我正在尝试创建多个线程 每个线程计算素数 我正在尝试使用线程创建将第二个参数传递给函数 它不断抛出错误 void compute prime void arg void arg2 这是我的 main 和创建线程 max prime 之后的
  • 使用函数更改指针包含的地址

    如果我声明了一个指针p as int p 在主模块中 我可以更改包含的地址p通过分配p a where a是另一个已经声明的整型变量 我现在想通过使用以下函数来更改地址 void change adrs int q int newad q
  • Golang - 如何在特定时间执行函数

    我需要在一天中的特定时间运行一个函数 例如 0010 0610 1210 1810 我目前的方法使用自动收报机for range time Tick 21600 time Second 我以这些时间间隔之一 例如 1210 手动启动该程序
  • r 函数使用子集调用 lm

    我正在编写一些代码 我注意到一些奇怪的事情 当我在某些面板数据的子集上运行 LM 时 它工作正常 如下所示 library plm data Cigar lm log price log pop log ndi data Cigar sub
  • 使用反射从泛型结构获取类型参数

    想象一下我有以下结构 type MyGeneric T string int struct 我想在创建新的 MyGeneric 时检查用于实例化该结构的泛型是字符串还是 int myGenericString MyGeneric strin
  • 为什么Go中可以在多个return语句中重新定义err

    考虑下面的示例来说明这个问题 它只是为了解释这个问题而构建的 但我在书中以及实际项目中都看到了类似的代码 package main import strconv fmt log func main n1 err strconv Atoi 1
  • 如何声明返回函数指针的函数指针

    如何声明一个函数指针 该指针指向具有相同参数的函数 并返回一个指向具有相同参数的函数的指针 i e funcPtr指着func1 int a int b and func1返回指向另一个函数的指针func2 int a int b func
  • 这个具有多个值(变量)的 return 语句如何工作? [复制]

    这个问题在这里已经有答案了 我试图了解 C 函数中按值传递和返回是如何发生的 我发现一段代码如下 include
  • 为什么 Go 中无法将 [Size]byte 转换为字符串?

    我有一个大小字节数组 是我做完之后得到的md5 Sum data byte testing var pass string var b 16 byte b md5 Sum data pass string b 错误 cannot conve

随机推荐

  • PHP:$var 和 &$var 有什么区别?

    有什么区别 foreach my array as my value And foreach my array as my value 我可以请您举两个现实世界的例子来说明何时使用其中一种以及何时使用另一种吗 第一个示例创建值的副本 而第二
  • 如何在语义保证下使用 React.memo 或 useMemo?

    的文档useMemo says 您可以依赖 useMemo 作为性能优化 而不是作为语义保证 未来 React 可能会选择 忘记 一些 先前记忆的值并在下次渲染时重新计算它们 例如 为屏外组件释放内存 编写你的代码 以便它 没有 useMe
  • 代理 Firebase 函数的跨域状态 cookie 问题

    我使用开发了一个oAuth登录这个例子 https github com firebase functions samples tree master linkedin auth 遇到的第一个问题是如果浏览器中禁用第三方 cookie 现在
  • 如何将 Xml 属性绑定到 Treeview 节点,同时将 XDocument 数据绑定到 WPF Treeview

    我有一个 XML 需要将数据绑定到WPF 树视图 这里 XML 可以有不同的结构 TreeView 应该是数据绑定通用的 足以加载层次结构的任何排列 然而X属性在节点上 称为Title 应该数据绑定到 TreeViewItem 的标题文本
  • 在双屏环境上运行应用程序[重复]

    这个问题在这里已经有答案了 可能的重复 如何在 C 中找到应用程序正在哪个屏幕上运行 https stackoverflow com questions 549751 how do i find what screen the applic
  • 模拟用户脚本中的 Enter 键 tampermonkey [重复]

    这个问题在这里已经有答案了 我正在尝试编写一个用户脚本 在类名 chat input 的输入标记中键入一些内容并按 Enter 键 到目前为止 用户脚本仅键入 Hello 在聊天输入中 但不模拟回车键 知道为什么吗 var msg Hell
  • 将文本和容器置于圆圈内

    我这里有一个 Bootply http www bootply com XLGE6Vpjov http www bootply com XLGE6Vpjov 我需要将 3 个圆圈置于容器中 然后将其中的文本水平和垂直居中 如何使文本垂直居中
  • 获取模型或控制器中消化的 asset_path

    我有一个Article模型 它有一个字段svg path I use fabricjs绘制可以包含多篇文章且可修改的画布 我目前所做的是生成一个json包含文章的所有必需字段 包括svg path 当我尝试使用asset path帮手 ht
  • 如何使用 python boto3 将 s3 对象从一个存储桶复制到另一个存储桶

    我想将文件从一个 s3 存储桶复制到另一个 我收到以下错误 s3 meta client copy 源 目标 类型错误 copy 至少需要 4 个参数 给定 3 个 我无法通过阅读文档找到解决方案 这是我的代码 usr bin env py
  • madvise() 中 MADV_USERFAULT 标志的状态是什么?

    已经有一些讨论在 madvise 中使用新标志来告诉内核不要处理某些内存范围内的页面错误 lwn net 1 https lwn net Articles 615086 lwn net 2 https lwn net Articles 54
  • Google Drive SDK iOS 示例

    我按照Google Drive sdk的iOS示例教程中的步骤进行操作 https developers google com drive ios quickstart https developers google com drive i
  • paxos 与 raft 进行领导者选举

    读完paxos和raft paper后 我有以下困惑 paxos论文仅描述了单个日志条目的共识 相当于raft算法中的领导者选举部分 在raft的leader选举中 paxos的方式相对于简单的随机超时方式有什么优势呢 一个常见的误解是原始
  • 在 Eclipse 控制台中对日志进行着色

    有没有办法在 Eclipse 控制台中对部分日志进行着色 我知道我可以发送到错误和标准流并对它们进行不同的着色 但我更喜欢在 ANSI 转义代码 或任何其他 HTML 行中查找一些内容 我可以在字符串中嵌入颜色以使其在字符串中着色日志 它肯
  • 强制表单文本为小写

    我如何强制 用户名 文本中的文本input无论用户类型如何都小写 div class register div
  • 当区域控制器加载时,为什么我的 BaseController.User 值 == null ? [复制]

    这个问题在这里已经有答案了 我正在编写一个 Asp Net 核心应用程序 并且在获得导航访问权限之前让用户通过 Google 进行身份验证 当用户导航到我的 WorldBuilder 区域并点击 WorldController 时 Base
  • 两个具有相同名称和不同私钥的 iOS 分发证书的问题[已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们有两个 iOS 发行版证书 我在签名时遇到一些问题 因为两个分发证书具有相同的名称 如果我添加两个证书并尝试使用其中一个证书进行签名
  • sqlite 选择日期条件

    我有一个带有出生日期的 sqlite 表 我想执行一个查询来选择年龄超过 30 岁的记录 我已经尝试过以下方法 但它不起作用 select from mytable where dob gt 1 Jan 1980 select from m
  • Django Rest Framework 在序列化之前更新数据

    我希望任何用户都可以使用我的 RESTful API 创建自己的产品 为此 我创建了一个继承ListCreateAPIView的视图 问题是用户应该只创建他 她拥有的产品 因此当创建 Product 模型的实例时 我希望字段 Owner 对
  • 如何为iMessage Sticker App网格贴纸提供不同尺寸

    我创建了一个 iOS iMessage 贴纸应用程序 根据苹果文档 我应该能够以三种不同尺寸之一显示贴纸 但是 无论我将贴纸图像设置为什么尺寸 300px x 300px 408px x 408px 618px x 618px 它们仅显示为
  • Golang 中的函数声明

    在 Golang 中声明函数似乎有两种不同的方式 如下所示 package main import fmt var someFunc func arg string fmt Println arg func main someFunc He