go 语言学习笔记⑪——方法

go 语言学习笔记⑪——方法

带接收者的函数
是一个和特殊类型相关联的函数

func (receiver ReceiverType)funcName(parameters)result
receiver 不能是个指针或者是接口
只要接收者是不同类型,这个方法就不算同名, 是不同的方法
不能重载

package main

import (
	"fmt"
)

type myint int

func (a myint) add(b, d myint) (c myint) {
	c = a - b - d
	return
}

func main() {
	var a myint = 1
	fmt.Println(a.add(2, 3))
	//-4
}

值传递和引用传递

接收者为普通变量 拷贝数值

package main

import (
	"fmt"
)

type Person struct {
	name string
	sex  string
	age  int
}

type Student struct {
	Person
	idx int
	add string
}

func (a Student) set(name string, sex string, age int, idx int, add string) {
	a.name = name
	a.sex = sex
	a.age = age
	a.idx = idx
	a.add = add
}

func main() {
	var student Student = Student{}
	student.set("crm", "1", 19, 100, "hb")
	fmt.Printf("%+v", student)
	//{Person:{name: sex: age:0} idx:0 add:}

}

###接收者为指针变量 引用传递

package main

import (
	"fmt"
)

type Person struct {
	name string
	sex  string
	age  int
}

type Student struct {
	Person
	idx int
	add string
}

func (a *Student) set(name string, sex string, age int, idx int, add string) {
	a.name = name
	a.sex = sex
	a.age = age
	a.idx = idx
	a.add = add
}

func main() {
	var student Student = Student{}
	(&student).set("crm", "1", 19, 100, "hb")
	fmt.Printf("%+v", student)
	//{Person:{name:crm sex:1 age:19} idx:100 add:hb}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值