整体类似,区别是 函数属于包,通过包调用,方法属于结构体,通过结构体变量调用

方法定义 :     func (变量名  结构体类型)  methodName(参数列表)(返回值列表){}

函数定义 :     func methodName(参数列表)(返回值列表){}

调用方法时就把调用者赋值给接收者.(方法中的变量名)

方法实例:

type A struct {
    Name string
}

func (a A)foo()  { //接收者写在函数名前面的括号里面
    fmt.Println("foo")
}

func main() {
    a := A{}
    a.foo() //foo
}
 

函数实例:

func Add(a ,b int){             //函数
  fmt.Println(a+b)
}

func (a int) Add (b myInt){   //方法
  fmt.Println(a+b)
}

func main() {
        a, b := 3,4
        var aa,bb myInt = 3,4
        Add(a,b)
        aa.Add(bb)
  }

这样设计主要是为了go的面向对象编程。对象仅仅是一个有方法的值或者变量。