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

函数声明语法:函数名称前括号内的内容

鲜于海
2023-03-14
问题内容

抱歉,我无法在问题标题中更加具体,但是我正在阅读一些Go代码,并且遇到了这种形式的函数声明:

func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    ...
}

来自https://github.com/mattermost/platform/blob/master/api/context.go

func (s *GracefulServer) BlockingClose() bool {
    ...
}

来自https://github.com/braintree/manners/blob/master/server.go

什么是(h handler)(s *GracefulServer)括号平均值之间?考虑到括号之间事物的含义,整个函数声明是什么意思?

编辑

这与Go中的功能和方法有何不同?:之所以问这个问题,是因为我不知道函数名之前括号中的内容是什么,不是因为我想知道函数和方法之间的区别是什么…如果我知道此声明是一个方法,我不会首先没有这个问题。如果有一天,某人与我有同样的疑问,我不相信她会去寻找“
golang方法”,因为她不知道这种情况。这就像想知道字母“
sigma”在数学表达式之前是什么意思(不知道它表示求和),并且有人说这是求和与其他事物之间的区别的重复。

同样,对这个问题的简短回答(“它是一个接收者”)不是对“函数和方法之间的区别”的回答。


问题答案:

这称为“接收器”。第一种情况(h handler)是值类型,第二种(s *GracefulServer)情况是指针。Go的工作方式可能与某些其他语言有所不同。但是,在大多数面向对象的编程中,接收类型或多或少像一个类。这是您从中调用方法的事情,就像如果我将某个方法A放在某个类的旁边,Person那么我将需要一个类型的实例Person来进行调用A(假设它是一个实例方法,而不是静态的!)。

“Evan”`会返回调用范围后无法持久保存。出于这个原因,任何希望改变接收器状态的事物都需要使用指针或返回修改后的值(如果您正在寻找更多的不可变类型范例,则可以使用)。

这是规范中的相关部分;https://golang.org/ref/spec#Method_sets



 类似资料:
  • 问题内容: 我刚刚开始学习语言,但仍在尝试消化一些东西。 我写了一个函数为: 我真的很困惑或由于缺乏知识而无法理解的用例 。 问题答案: 我在“ 您可以在Go中一次声明多个变量吗? ”中提到过:解释了。 但是您需要具有与函数的每个参数相关联的类型,而上一个参数列表中并非如此。 顺序始终是,而不是遵循变量声明规范: 你会总能找到一个类型 后 一个:或

  • 主要内容:普通函数声明(定义),函数的返回值,调用函数函数构成了代码执行的逻辑结构,在Go语言中,函数的基本组成为:关键字 func、函数名、参数列表、返回值、函数体和返回语句,每一个程序都包含很多的函数,函数是基本的代码块。 因为Go语言是编译型语言,所以函数编写的顺序是无关紧要的,鉴于可读性的需求,最好把 main() 函数写在文件的前面,其他函数按照一定逻辑顺序进行编写(例如函数被调用的顺序)。 编写多个函数的主要目的是将一个需要很多行代码的复

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

  • 问题内容: 创建一个功能 当iam尝试执行此操作时,会出现错误“’Split_On_Upper_Case’不是公认的内置函数名称。”。有人可以解释一下吗? 问题答案: 在前缀中添加[dbo],然后执行相同的命令:

  • 2.2. 函数声明 2.2.1. Python 和其他编程语言数据类型的比较 与其它大多数语言一样 Python 有函数, 但是它没有像 C++ 一样的独立的头文件;或者像 Pascal 一样的分离的 interface/implementation 段。 一旦需要函数时, 像下面这样声明即可: def buildConnectionString(params): 首先, 函数声明以关键字 de

  • 每个函数前面应该放置一段块注释,概要描述该函数做什么以及(如果不是很清晰)如何使用该函数。重要的设计决策讨论以及副作用说明也适合放在注释 中。避免提供那些代码本身可以清晰提供的信息。 函数的返回类型应该单独占据一行,(可选的)缩进一个级别。不用使用默认返回类型int;如果函数没有返回值,那么将返回类型声明为void。如 果返回值需要大段详细的说明,可以在函数之前的注释中描述;否则可以在同一行中对返