方法和函数的区别
方法和函数的区别
【1】绑定指定类型:
方法:需要绑定指定数据类型
函数:不需要绑定数据类型
【2】调用方法不一样:
函数的调用方式:
函数名(实参列表)
方法的调用方式:
变量.方法名(实参列表)
package main
import "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 main
import "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 main
import "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() //虽然用值类型调用方法,但方法接收者是指针类型,所以还是指针类型的接收者
}

浙公网安备 33010602011771号