什么是方法?

方法其实就是一个函数,在 func 这个关键字和方法名中间加入了一个特殊的接收器类型。

接收器可以是结构体类型或者是非结构体类型。接收器是可以在方法的内部访问的。

语法

func (a Person) getName()  {

}  //类型为Person,方法是getName

指针接收器与值接收器

    func (值)changeName(name string):在内部修改值,不会影响外部的值
    func (指针)changeName(name string):在内部修改值,会影响外部的值

什么时候使用指针接收器、什么时候值接收器

想修改原值,就用指针接收器
其他情况使用值接收器

匿名字段的方法

在方法中使用值接收器 与 在函数中使用值参数
在方法中使用指针接收器 与 在函数中使用指针参数
不管是指针接收器还是值接收器,都可以使用值来调用
不管是指针接收器还是值接收器,都可以使用指针来调用
函数中,是什么参数,就得传什么参数
package main

import "fmt"

type Person2 struct {
    name string
    age int
    sex int
}
//方法中使用值接收器
func (a Person2)printName()  {
    fmt.Println(a.name)

}
//方法中使用指针接收器
func (a *Person2)printName2()  {
    fmt.Println(a.name)
}
//函数中使用值参数
func printName(a Person2)  {
    fmt.Println(a.name)
}
//在函数中使用指针参数
func printName2(a *Person2)  {
    fmt.Println(a.name)
}

func main() {
    //p:=&Person2{name:"xy"}
    //调用值接收器
    //p.printName()
    //调用指针接收器
    //p.printName2()
    //调用值函数
    //printName(p)
    //调用指针函数
    //printName2(&p)

}
12-21 16:38