【发布时间】:2016-03-06 01:09:53
【问题描述】:
很抱歉,我无法在问题标题中更具体,但我正在阅读一些 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) 是什么意思?整个函数声明是什么意思,考虑到括号之间的东西的含义?
编辑
这不是Whats the difference of functions and methods in Go?的重复:这个问题来找我是因为我不知道函数名前括号中的东西是什么,而不是因为我想知道函数和方法之间有什么区别......如果我知道这个声明是一种方法,我一开始就不会提出这个问题。如果有一天有人和我有同样的疑问,我不相信她会去寻找“golang方法”,因为她不知道是这样的。这就像想知道数学表达式之前的字母“sigma”是什么意思(不知道它的意思是求和),有人说它是求和与其他事物之间区别的重复。
此外,对这个问题(“它是一个接收器”)的简短回答不能回答“函数和方法之间有什么区别”。
【问题讨论】:
-
@Volker 然后发表免责声明,称 stackoverflow 上的 Go 人员只回答不在 Tour of Go 上的问题。在 Haskell 社区中,人们可以提出How can I get
nth element from the list in Haskell? 之类的问题,该问题位于Learn you a Haskell for Great Good 的简介中,并且可以毫不费力地回答他们的问题。 -
当我有这个问题时,我首先去了Go Tour。我检查了所有的“功能”标题,但没有一个例子涵盖这一点。 tour.golang.org/basics/4 tour.golang.org/basics/5 如果你不知道扩展方法和接口,你不会看到“方法就是函数”的标题。这个问题对谷歌索引是有效的和伟大的。重复的旗帜狂热者需要点亮。
-
感谢您没有具体说明您的问题,因为这足以帮助我找到答案!
-
你问的正是我搜索的内容,这是一个有效的问题。谢谢你。我阅读了所有类型的函数定义,但没有人解释这一点。我仍然尝试写我的 nube 问题并找到了这个。
-
非常感谢您提出这个问题并以这种方式表达它!
标签: go