golang函数和方法的区别

【1】绑定指定类型: 方法:需要绑定指定数据类型 函数:不需要绑定数据类型

golang函数和方法的区别

【2】调用方式不一样: 函数的调用方式: ​​​函数名(实参列表)​​​ 方法的调用方式:​​变量.方法名(实参列表)​​

package mainimport "fmt"type Student struct{ Name string}//定义方法:func (s Student) test01(){ fmt.Println(s.Name)}//定义函数:func method01(s Student){ fmt.Println(s.Name)}func main(){ //调用函数: var s Student = Student{"丽丽"} method01(s) //方法调用: s.test01()}

【3】对于函数来说,参数类型对应是什么就要传入什么。

package mainimport "fmt"type Student struct{ Name string}//定义函数:func method01(s Student){ fmt.Println(s.Name)}func method02(s *Student){ fmt.Println((*s).Name)}func main(){ var s Student = Student{"丽丽"} method01(s) //method01(&s)错误 method02(&s) //method02(s)错误}

【4】对于方法来说,接收者为值类型,可以传入指针类型,接受者为指针类型,可以传入值类型。

package mainimport "fmt"type Student struct{ Name string}//定义方法:func (s Student) test01(){ fmt.Println(s.Name)}func (s *Student) test02(){ fmt.Println((*s).Name)}func main(){ var s Student = Student{"丽丽"} s.test01() (&s).test01()//虽然用指针类型调用,但是传递还是按照值传递的形式 (&s).test02() s.test02()//等价}