方法和函数的区别

方法和函数的区别

【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() //虽然用值类型调用方法,但方法接收者是指针类型,所以还是指针类型的接收者
}
posted @ 2025-07-02 18:11  hutaodd  阅读(8)  评论(0)    收藏  举报