Go中的函数和方法有什么区别?

2024-04-03

我正在尝试开始使用 Go 和文档 http://golang.org非常好。我在文档中没有找到函数和方法之间的区别。

据我目前的理解:函数是“全局”的,这意味着我不必导入包来使用函数,它们总是存在的。方法绑定到包。它是否正确?


据我目前的理解:函数是“全局”的,这意味着我不必导入包来使用函数,它们总是存在的。方法绑定到包。它是否正确?

不,那是不正确的。只有几个函数builtin http://golang.org/pkg/builtin/始终可用的包。其他一切都需要进口。

“方法”一词是在面向对象编程中提出的。在 OOP 语言(例如 C++)中,您可以定义一个“类”来封装属于一起的数据和函数。类中的这些函数称为“方法”,您需要该类的实例才能调用此类方法。

在 Go 中,术语基本相同,尽管 Go 不是经典意义上的 OOP 语言。在 Go 中,带有接收者的函数通常被称为方法(可能只是因为人们仍然习惯 OOP 的术语)。

因此,例如:

func MyFunction(a, b int) int {
  return a + b
}
// Usage:
// MyFunction(1, 2)

but

type MyInteger int
func (a MyInteger) MyMethod(b int) int {
  return a + b
}
// Usage:
// var x MyInteger = 1
// x.MyMethod(2)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Go中的函数和方法有什么区别? 的相关文章

  • Golang xml.Unmarshal 接口类型

    使用xml我在解组非同质类型列表时遇到问题 考虑以下 XML 文档 其嵌套元素是非同质类型的列表
  • 从逗号分隔的字符串创建 html 表 javascript

    我正在尝试编写一个 Javascript 函数 该函数将文本写入 最终 创建以下 html 表 我将向它传递不同长度的参数以创建数百个表 table tr td u School u td td u Percent u td tr td S
  • Python中如何从另一个函数调用一个函数内的函数? [复制]

    这个问题在这里已经有答案了 我已经在 python 中的另一个函数中定义了一个函数 现在我想调用内部函数 在Python中这可能吗 我怎么打电话func2 from func3 def func1 def func2 print Hello
  • 是否可以从 JS 显式调用导出的 Go WebAssembly 函数?

    是否可以调用 Go WebAssembly 函数 除了main 在 JavaScript 中 让我先展示一下我做了什么 我的Go函数定义如下 package main import fmt func main fmt Println it
  • 接口实现中的非接口方法

    我有一个定义方法的接口 我有一个结构实施这个界面 在其中 我实现了该接口中的方法 并且还定义了其他方法 例如 package main import fmt type Animal interface MakeNoise type Dog
  • 通过 Liquibase 从 SQL 脚本创建函数

    项目配置 数据库 MySQL 5 7 orm Hibernate 4 3 11 Final JPA 1 3 1 RELEASE 液体库 3 4 2 当我仅从 Liquibase 从 workBeanch 运行脚本时 我的问题不存在
  • 将接口转换为结构体

    type SipField interface Info id name defaultValue string length int type Field string func f Field Get string return str
  • Golang中的匿名接口实现

    在Go中 有没有办法匿名满足接口 似乎没有 但这是我最好的尝试 In the 操场 http play golang org p 4i 8o087dg package main import fmt type Thing interface
  • jQuery 中使用 bind() 和each() 分配事件处理程序的区别?

    有人可以告诉我使用bind 分配事件处理程序有什么区别吗 function someElement bind mouseover function e this css change color bind mouseout function
  • 在 docker build 中缓存“go get”

    我想将 golang 单元测试封装在 docker compose 脚本中 因为它依赖于多个外部服务 我的应用程序有很多依赖项 因此需要一段时间go get 如何以允许构建 docker 容器的方式缓存包 而无需每次要测试时下载所有依赖项
  • 将 void* 作为函数调用而不声明函数指针

    我已经搜索过 但找不到任何结果 我的术语可能有问题 所以如果以前有人问过这个问题 请原谅我 我想知道是否有一种简单的方法可以调用void 作为 C 中的函数 无需首先声明函数指针 然后为函数指针分配地址 IE 假设要调用的函数是类型void
  • 在 Golang Server 中接受持久的 tcp 连接

    我正在尝试使用 Go 并且想创建一个 TCP 服务器 我可以通过 telnet 访问该服务器 发送命令并接收响应 const CONN HOST localhost CONN PORT 3333 CONN TYPE tcp func mai
  • 如何获取字段类型的零值

    我有一个包含许多字段的结构 我已经弄清楚如何使用反射提取字段名称 值和标签信息 我还想做的是确定字段的值是否与字段的默认值不同 目前 我有这个 有效 但有点臭 qsMap make map string interface var defa
  • ConstantTimeByteEq 如何工作?

    在大神的密码库里 找到了这个函数ConstantTimeByteEq http golang org src pkg crypto subtle constant time go s 897 936 L17 它有什么作用 如何工作 Cons
  • Javascript:stringify对象(包括类型函数的成员)

    我正在寻找一种解决方案来跨浏览器将 Javascript 对象序列化 和反序列化 为字符串 包括恰好是函数的对象成员 一个典型的对象看起来像这样 color red doSomething function arg alert Do som
  • 如何更改“go build”的库路径

    我正在尝试与 goncurses 一起工作 在 Centos 6 上 ncurses 库很旧 5 7 想要 5 9 所以我从源代码构建了 ncurses 并将其安装到 usr lib usr include 等中 如何告诉 go get 针
  • Perl 使用什么哈希函数/算法?

    有人能解释一下 Perl 用于将字符串映射到索引的哈希函数 算法吗 有相关读物吗 这个答案早于 5 28 中进行的哈希函数更改 请参阅 默认哈希函数更改 perldelta 为 5 28 http perldoc perl org perl
  • 查找 Java 程序的实际运行时调用树

    假设我有一个包含数百个方法的大程序 根据输入的性质 程序流程正在发生变化 我想我想对原来的流程进行更改 找到调用层次结构 引用并理解流程是一件很大的麻烦 我在 Eclipse 中对此有任何解决方案吗 或者插件 例如 我只需要一个按时间顺序排
  • 破坏/分解函数的函数

    我以前有过 here https stackoverflow com questions 4920610 c class function in assembly 已经表明 C 函数不容易用汇编表示 现在我有兴趣以一种或另一种方式阅读它们
  • 从 UIButton 调用类外部的函数

    我有一个函数 我想在按下按钮时调用它 但与我迄今为止所做的任何事情不同 我希望能够从多个 ViewController 中的任何一个访问它 我不想在每个 ViewController 中重复相同的代码块 我尝试在 ViewControlle

随机推荐

  • UIScrollView 就像 iPad 上的 Twitter 应用程序

    我正在寻找教程或一些想法来制作一个类似于 iPad 版 Twitter 应用程序中的自定义控制器 我的意思是左侧有主菜单的堆叠页面 预先感谢您的任何帮助 我们创建了一个模拟项目并添加到 github 中 https github com r
  • 如何禁用 JButton 而不隐藏其标签?

    我正在使用 netbeans IDE 在 Java 中开发一个项目 我需要禁用特定的 JButton 我为此使用以下代码 IssuBtn setEnabled false 但禁用后 它不会在 JButton 上显示文本 如何将该文本保留在
  • 如果选中复选框,如何隐藏和显示项目

    我试图根据是否选中复选框来隐藏和显示一个区域 我尝试了一些选项 但该区域要么始终可见 要么始终隐藏 JavaScript document ready function var mgift chkbxMGift input type che
  • 如何跳转到 PrintDocument 中的下一页?

    我有一个应用程序可以打印您想要的条形码数量 但是如果条形码的数量大于条形码的大小打印文档 http msdn microsoft com en us library system drawing printing printdocument
  • Gradle 与 Eclipse - 当多个源集时不完整的 .classpath

    我有一个 gradle 构建脚本 其中包含一些源集 这些源集都定义了各种依赖项 有些是常见的 有些不是 并且我正在尝试使用 Eclipse 插件来让 Gradle 生成 project and classpath文件的 Eclipse 但我
  • 如何在android java应用程序中从设备获取图像

    在我的应用程序中 我想上传图像 为此 我必须从 Android 设备中的图库中获取图像 我如何编写代码来完成这个任务 提出意图并采取行动ACTION GET CONTENT并将类型设置为 image 这将启动照片选择器 Activity 当
  • nunjucks:找不到模板

    尝试渲染 nunjucks 模板但得到Error template not found email html server views email email html workers email worker js email worke
  • 转换文件编码

    我有一个 PHP 应用程序 其文件编码是 Greek ISO iso 8859 7 我想将文件转换为 utf 8 但仅使用 utf 8 保存文件是不够的 因为希腊文本会出现乱码 是否有一种 自动 方法可以执行此操作 以便我可以完全转换应用程
  • 如何检索两个 3D 向量之间的角度?

    我是Python新手 我在 3d 空间中有两个向量 我想知道两个向量之间的角度 I tried vec1 x1 y1 z1 vec2 x2 y2 z2 angle np arccos np dot vec1 vec2 np linalg n
  • Python脚本将文件从一台服务器获取到另一台服务器并将它们存储在单独的目录中?

    我正在研究server 1 我需要编写一个Python脚本来连接到server 2并从一个目录中获取某些文件 名称以字母 HM 开头的文件 并将它们放入另一个目录中 该目录需要在运行时创建 因为对于程序的每次运行 都必须创建一个新目录 创建
  • Javascript 方法命名小写与大写

    我主要是 ASP NET 和 C 的开发人员 我以小写字母开头命名变量 以大写字母开头命名方法 但我研究的大多数 javascript 示例都有以小写字母开头的函数 这是为什么 这很重要吗 function someMethod alert
  • gdb print :执行的每个语句的行号

    我有一个确定性的 halting 程序与no IO 我想要使用 gdb 运行并让它打印执行的每个 c 语句 例如文件名 行号
  • 一个列表中多个对象类型的 Xml 序列化

    我有一个对象 其中包含抽象 aninamls 列表 IE var animals new Animals new Bird TailFeatherColour Blue new Cat Colour Brown 使用 xmlserializ
  • 二进制 * 的操作数无效(有“ab {aka struct a}”和“ab * {aka struct a *}”)

    我编写了一个程序来交换数组中的两个结构 我的编码如下 include
  • Gatsby 客户端重定向到外部 URL 在 Netlify 上不起作用

    我需要从 Netlify 上托管的 Gatsby 站点上的页面执行简单的客户端重定向到外部 URL 它在本地工作正常 但部署后似乎没有任何作用 Gatsby 的本机 createRedirect 功能似乎也存在一个错误 因此它不允许重定向到
  • 正确中止或取消 PostAsync

    使用 HttpClient 时是否有保证取消帖子的方法 我目前有一个调用 do PostAsync 的方法 我试图使用取消令牌取消该调用 但它似乎实际上并没有中止 停止操作 我仍然可以看到我上传的图像已正确发布 我在这里做错了什么 或者 H
  • 用户警告:布尔系列键将被重新索引以匹配 DataFrame 索引

    使用此语句时 会在单个语句中显示多个警告 Internaldfdeny pd DataFrame Count Internaldf Internaldf Status deny Internaldf SrcIP NA Internaldf
  • 如何在打印机中打印图像文件

    我编写了一个简单的程序来在 JSF 中打印图像 我有一张图像 sampleImage png 我已经将我的电脑连接到打印机 我手动打开图像并选择打印选项 然后我从打印机获得图像 现在我想使用 javascript 打印图像 文件名 imag
  • 配置文件实体框架

    我有以下示例代码 Context context new Context Repository repository new Repository context Post post repository First
  • Go中的函数和方法有什么区别?

    我正在尝试开始使用 Go 和文档 http golang org非常好 我在文档中没有找到函数和方法之间的区别 据我目前的理解 函数是 全局 的 这意味着我不必导入包来使用函数 它们总是存在的 方法绑定到包 它是否正确 据我目前的理解 函数