在Go语言中,函数名之前的参数是函数的参数列表。

huangapple go评论96阅读模式
英文:

Parameter before the function name in Go?

问题

我看到一些Go函数的定义如下:

type poly struct {
    coeffs [256]uint16
}

func (p *poly) reset() {
    for i := range p.coeffs {
        p.coeffs[i] = 0
    }
}

之后你可以这样调用它:

var p poly
p.reset()

在我所了解的其他编程语言中,我没有见过这种写法。p *poly 在 reset 函数中的作用是什么?它似乎像一个函数参数,但是写在函数名之前。你能解释一下吗?

英文:

I have seen some Go functions defined like this:

type poly struct {
	coeffs [256]uint16
}

func (p *poly) reset() {
	for i := range p.coeffs {
		p.coeffs[i] = 0
	}
}

Which you can later call as:

var p poly
p.reset()

I haven't seen this in other programming languages that I know. What's the purpose of p *poly in the reset function? It seems to be like a function parameter but written before the function name. Any clarification for it?

答案1

得分: 37

这意味着reset()*poly上的一个方法。

英文:

It means that reset() is a method on *poly.

huangapple
  • 本文由 发表于 2017年8月12日 02:50:10
  • 转载请务必保留本文链接:https://go.coder-hub.com/45641999.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定