Skip to content

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

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

go
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】对于函数来说,参数类型对应是什么就要传入什么。

go
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】对于方法来说,接收者为值类型,可以传入指针类型,接受者为指针类型,可以传入值类型。

go
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()//等价
}

Java · Golang · Rust