golang方法的介绍

golang方法的介绍

1、定义

func (接收者类型) 方法名 (参数列表) (返回值列表)
func (rt ReceiverType) MethodName(parameters) (returns)

type User struct {
	name string
	age int
}

func (u User) SetName(name string) {
	u.name = name
}

func (u *User) SetAge(age int) {
	u.age = age
}

2、值接收者

func (u User) SetName(name string) {
	u.name = name
}
func main() {
	u1 := &User{"张三", 18}
	fmt.Println(u1)
	u1.SetName("李四")
	u1.SetAge(19)
	//指针对象调用值接收者方法,相当于(*u1).SetName("李四")
	fmt.Println(u1)
}
&{张三 18}
&{张三 19}

u1 可以调用值接收者 SetName 方法,相当于先取值,再调用,其结果同值传递一样不会更新到原始指针对象。

3、指针接收者

func (u *User) SetAge(age int) {
	u.age = age
}
func main() {
	u1 := &User{"张三", 18}
	fmt.Println(u1)
	u1.SetName("李四")
	u1.SetAge(19)
	//指针对象调用值接收者方法,相当于(*u1).SetName("李四")
	fmt.Println(u1)

	u2 := User{"李四", 19}
	fmt.Println(u2)
	u2.SetName("张三")
	u2.SetAge(18)
	//值对象调用指针接收者方法,相当于(&u2).SetAge(18)
	fmt.Println(u2)
}
&{张三 18}
&{张三 19}
{李四 19}
{李四 18}

u2 可以调用指针接收者 SetAge方法,相当于先取指针,再调用,其结果同指针传递一样会更新原始值。

4、值接收者指针接收者 的区别使用

1)无论是值对象调用,还是指针对象调用,其结果根据是值接收者还是指针接收者而定;
2)值接收者的方法,方法内的操作不更新到原始的传递对象;
3)指针接收者的方法,方法内的操作会更新到原始的传递对象;

(^ _ ^)/ 新手误怪,如有错误,欢迎指正修改!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值