博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初识Go(6)
阅读量:5147 次
发布时间:2019-06-13

本文共 1644 字,大约阅读时间需要 5 分钟。

method带有接收者的函数,我们称为 methodfunc (r ReceiverType) funcName(parameters) (results)package mainimport (	"fmt"	"math")type Rectangle struct {	width, height float64}type Circle struct {	radius float64}func (r Rectangle) area() float64 {	return r.width*r.height}func (c Circle) area() float64 {	return c.radius * c.radius * math.Pi}func main() {	r1 := Rectangle{12, 2}	r2 := Rectangle{9, 4}	c1 := Circle{10}	c2 := Circle{25}	fmt.Println("Area of r1 is: ", r1.area())//调用的都是area这个方法,但是接受的参数对象不一样	fmt.Println("Area of r2 is: ", r2.area())	fmt.Println("Area of c1 is: ", c1.area())	fmt.Println("Area of c2 is: ", c2.area())}method名字一样,但是接受者的参数不一样,那就是两个methodfunc (b *Box) SetColor(c Color) {	b.color = c}c就是普通函数接受的参数指针作为Reciever从上一个例子就可已看出,传入的Reciever是 *Box是个指针,为什么呢?因为我们要修改color的值,如果传入的是Box,那么它是一个copy,并不能作用于Box本身,所以传入的是一个指针。如果一个 method 的 receiver 是*T,你可以在一个 T 类型的实例变量 V 上面调用这个method,而不需要&V 去调用这个 method如果一个 method 的 receiver 是 T,你可以在一个*T 类型的变量 P 上面调用这个 method,而不需要 *P 去调用这个 methodmethod继承如果匿名字段实现了一个 method,那么包含这个匿名字段的 struct 也能调用该method。type Human struct {	name string	age int	phone string}type Student struct {	Human //匿名字段	school string}func (h *Human) SayHi() {	fmt.Printf("Hi, I am %s you can call me on %s\n", h.name, 	h.phone)}mark := Student{Human{"Mark", 25, "222-222-YYYY"}, "MIT"}mark.sayHi()method重写func (h *Human) SayHi() {	fmt.Printf("Hi, I am %s you can call me on %s\n", h.name, h.phone)}//Employee 的 method 重写 Human 的 methodfunc (e *Employee) SayHi() {	fmt.Printf("Hi, I am %s, I work at %s. Call me on %s\n", e.name,	e.company, e.phone) //Yes you can split into 2 lines here.}

  

转载于:https://www.cnblogs.com/huangxiaohen/p/4182333.html

你可能感兴趣的文章
SDN第四次作业
查看>>
idea连接服务器上传jar并运行
查看>>
oracle高级分组
查看>>
django--->form表单
查看>>
获取网页源代码
查看>>
一个简单的演示用的Linux字符设备驱动程序
查看>>
spi和I2c的速率
查看>>
Android 开源框架ActionBarSherlock 和 ViewPager 仿网易新闻客户端
查看>>
09、C语言——构造类型
查看>>
ssm框架实现图片上传显示并保存地址到数据库
查看>>
成都Uber优步司机奖励政策(4月1日)
查看>>
MIPI-DSI/CSI协议介绍-转载
查看>>
flex学习记录——加载图片
查看>>
菜菜鸟Zend Framework 2 不完全学习涂鸦(三)-- 例子功能设置
查看>>
git之版本回退
查看>>
解决img标签上下间隙问题
查看>>
RPM usage
查看>>
English
查看>>
echarts点击按钮更换数据(数据长度 条数变化)
查看>>
装系统·折腾记
查看>>