func (a int) A() int  { 
//a是int类型的接收参数,返回值是int
    
}

方法的经典例子

package main
 
import "fmt"
 
type myint int
 
//乘2
func (p *myint) mydouble() int {
    *p = *p * 2
    return 0
}
 
//平方
func (p myint) mysquare() int {
    p = p * p
    fmt.Println("mysquare p = ", p)
    return 0
}
 
func main() {
    var i myint = 2
    i.mydouble()
    fmt.Println("i = ", i)
    i.mysquare()
    fmt.Println("i = ", i)
}

运行结果:

i = 4
mysquare p = 16
i = 4

  我们可以看到方法和函数的区别,方法在func关键字后是接收者而不是函数名,接收者可以是自己定义的一个类型,这个类型可以是struct,interface,甚至我们可以重定义基本数据类型。我们可以给他一些我们想要的方法来满足我们的实际工程中的需求,就像上面一样我重定义了int并给了它一个乘2和平法的方法,这里我们要注意一个细节,接收者是指针和非指针的区别,我们可以看到当接收者为指针式,我们可以通过方法改变该接收者的属性,但是非指针类型缺做不到
这里的接收者和c++中的this指针有一些相似,我们可以把接受者当作一个class,而这些方法就是类的成员函数,当接收者为指针类型是就是c++中的非const成员函数,为非指针时就是const成员函数,不能通过此方法改变累的成员变量。