需要GoLang函数声明说明

时间:2020-09-08 10:12:02

标签: function go

我看过函数的声明和用法 https://gobyexample.com/functions

但是我有如下所示的golang代码:

func (channel *AmqpChannel) FunctionName(message string) int {

...
}

我在任何地方都找不到上述语法的引用。

有人可以解释一下golang中的函数语法吗? 我主要得不到的是函数名称前的(channel * AmqpChannel)部分。

2 个答案:

答案 0 :(得分:1)

这是method declaration,用于在FunctionName对象上定义的名为*AmqpChannel的方法。

(channel *AmqpChannel)使用指针接收器声明此方法,这意味着您应该在*AmqpChannel类型的对象上调用它。这与带有用(channel AmqpChannel)声明的值接收器的方法形成对比。

有关方法调用和指针与值接收器的详细信息,请参见calls section of the spec,包括何时编译器允许您在值类型上调用指针方法。

答案 1 :(得分:1)

嗨,这种语法用于声明方法,基本上是一种附加到类型上的函数

例如,您创建类似

type Circle struct {
    Radius float64
}

现在,如果您想简单地做方法

func (c Circle) Area() float64 {
    return  PI * c.Radius * c.Radius
}

方法可以在有或没有引用的情况下声明

如果您使用

(c *圆圈)

它将通过圆圈作为对函数的引用

现在您可以像这样称呼

var c Circle
c.Radius = 4
fmt.Println(c.Area())
相关问题