范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

golang2021面向对象(17)方法

  方法能给用户自定义的类型添加新的行为。它和函数的区别在于方法有一个接收者,给一个函数添加一个接收者,那么它就变成了方法。接收者可以是值接收者,也可以是指针接收者。
  在调用方法的时候,值类型既可以调用值接收者的方法,也可以调用指针接收者的方法;指针类型既可以调用指针接收者的方法,也可以调用值接收者的方法。
  也就是说,不管方法的接收者是什么类型,该类型的值和指针都可以调用,不必严格符合接收者的类型。
  来看个例子:
   1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39package main
  import "fmt"
  type   Person struct {
              age int
      }
  func   (p Person) howOld() int {
              return p.age
      }
  func   (p *Person) growUp() {
              p.age += 1
      }
  func   main() {
              // qcrao 是值类型
              qcrao := Person{age: 18}
  // 值类型 调用接收者也是值类型的方法
              fmt.Println(qcrao.howOld())
  // 值类型 调用接收者是指针类型的方法
              qcrao.growUp()
              fmt.Println(qcrao.howOld())
  // ----------------------
  // stefno 是指针类型
              stefno := &Person{age: 100}
  // 指针类型 调用接收者是值类型的方法
              fmt.Println(stefno.howOld())
  // 指针类型 调用接收者也是指针类型的方法
              stefno.growUp()
                fmt.Println(stefno.howOld())
      }
  上例子的输出结果是:
  1
      2       3       4   18
      19       100       101   调用了 growUp 函数后,不管调用者是值类型还是指针类型,它的 Age 值都改变了。   实际上,当类型和方法的接收者类型不同时,其实是编译器在背后做了一些工作,用一个表格来呈现:   -   值接收者   指针接收者   值类型调用者   方法会使用调用者的一个副本,类似于"传值"   使用值的引用来调用方法,上例中,qcrao.growUp()   实际上是 (&qcrao).growUp()   指针类型调用者   指针被解引用为值,上例中,stefno.howOld()   实际上是 (*stefno).howOld()   实际上也是"传值",方法里的操作会影响到调用者,类似于指针传参,拷贝了一份指针   值接收者和指针接收者 #   前面说过,不管接收者类型是值类型还是指针类型,都可以通过值类型或指针类型调用,这里面实际上通过语法糖起作用的。   先说结论:实现了接收者是值类型的方法,相当于自动实现了接收者是指针类型的方法;而实现了接收者是指针类型的方法,不会自动生成对应接收者是值类型的方法。   来看一个例子,就会完全明白:    1        2        3        4        5        6        7        8        9       10       11       12       13       14       15       16       17       18       19       20       21       22       23       24       25       26package main   import "fmt"   type   coder interface {               code()               debug()       }   type   Gopher struct {               language string       }   func   (p Gopher) code() {               fmt.Printf("I am coding %s language ", p.language)       }   func   (p *Gopher) debug() {               fmt.Printf("I am debuging %s   language ", p.language)       }   func   main() {               var   c coder = &Gopher{"Go"}               c.code()               c.debug()       }   上述代码里定义了一个接口 coder,接口定义了两个函数:   1
      2   code()       debug()   接着定义了一个结构体 Gopher,它实现了两个方法,一个值接收者,一个指针接收者。   最后,我们在 main 函数里通过接口类型的变量调用了定义的两个函数。   运行一下,结果:   1
      2   I am coding Go language       I am debuging Go language   但是如果我们把 main 函数的第一条语句换一下:   1
      2       3       4       5   func   main() {               var   c coder = Gopher{"Go"}               c.code()               c.debug()       }

山东奇女子,接连破解全球顶级密码震惊世界,国家奖励700万奖金21世纪以来,互联网一年年日新月异,从最早的国防应用,到普通的工作与生活需要,智能化科技化高效化,很是为国家发展与人民安康提供了帮助。不过,凡事皆有两面性。网络给国家和人民提供便利多项技术加持,高通助力小米AX3000路由器提供强大WiFi6网络前段时间,小米发布了全新的路由器产品AX3000,将四根全向高增益天线隐藏在机身内,酷黑魔方一般的外观设计广受消费者喜爱,但是一台路由器最重要的还是它的内在,性能和体验究竟如何呢?华为新机9月上市,比iPhone13便宜两千多,有高刷屏5倍光学变焦在9月份,苹果将要发布iPhone13系列。多方消息显示,iPhone13系列不会涨价,四款机型的价格和iPhone12系列一致,其中主销机型iPhone13,国行价格还是6299华为或将重回巅峰!高通将向华为出货5G芯片,荣耀又该何去何从华为受限导致手机业务大幅度缩水华为作为我国一家民营企业是值得让人称赞的,由于其在5G通信领域掌握了全球最多的专利技术,引起了美方的忌惮,导致美方对华为展开了围追堵截。美方颁发禁令要热脸贴冷屁股?法国拆除华为设备,为何华为还送上万里光缆?点击关注,每天精彩不断!导读热脸贴冷屁股?法国拆除华为设备,为何华为还送上万里光缆?华为公司从一个小小的移动通信企业发展到中国第一大的民营巨头企业,可以说这一路走来还是非常不容易的谍照晚报新款AppleWatch更大型号曝光,iPhone13可能涨价离苹果发布会越来越近,相关的爆料也越来越多了。苹果AppleWatchSeries7更大的45mm型号曝光本周早些时候,有网友爆料称AppleWatchSeries7将发布41mm人形机器人要来了?特斯拉发布TeslaBot相关职位招聘CNMO新闻很多男生都看过机器纪元人工智能等电影,对人形机器人有一种特别的喜爱,希望在现实中也能诞生出跟电影里一样的机器人。在此前的人工智能日上,特斯拉宣布推出人形机器人,用来进行快开学了,给孩子们推荐一款手机,OPPOk7x我记得今天上午我写了一篇文章,是关于A95的,但是经过我反复思考,还是把那篇文章给删了,写出来都有点对不起大家,在这里我先说一句抱歉。因为那款手机的亮点就是一个30瓦的vooc闪充新能源汽车之后,全新的超级题材工业母机来了,给3个潜力概念股题材年年有,今年尤其多,这不,新能源汽车还没退火,又一个题材汹涌而来。工业母机驾到上周四,国资委召开扩大会议,会议上强调要把科技创新摆在更加突出的位置,推动中央企业主动融入国家基础新能源汽车横空出世新能源车该有的样子脚踏新时代阶梯,新能源汽车也已成为当今时代热点。那么新能源汽车到底应该有什么样的样子呢?首先提到新能源我想到的便是什么是新能源,放眼过去中华上下五千年从石器时代到新能源汽车怎么样?值不值得我们进行购买?随着近年来科技的发展以及人们对环境保护的重视,越来越多的人在购车选择时,都越来越趋向于新能源汽车的购买,但尽管如此,依旧还有很多想要换车的买家在犹豫,新能源汽车到底怎么样?它值不值
中国科学家把汉字存入DNA!DNA存储未来如何发展?近日,东南大学师生团队成功将该校校训止于至善存入一段DNA序列,实现了DNA存储技术的新突破,并将相关成果发表在国际学术期刊科学进展上。刘宏团队改进传统的化学合成方法,运用电化学方人工智能的过去现在和未来(二)上一篇介绍了人工智能的定义和相关因素,人工智能就是数据接收数据处理和数据传递。其相关因素是硬件因素软件因素决策因素。这篇就说一下相关的细节。人工智能是从什么时候开始的?从电子设备处东数西算闪亮登场恒昌谋势数字基建产业链伴随着大数据云计算5G等数字技术的广泛应用,中国信息产业高歌猛进飞速发展。技术赋能下,各行各业产生了巨量的业务数据,如何通过海量数据挖掘到高价值信息为各行各业所用,考验算力基础设施聊聊最适合打游戏的iPhone型号今天聊一聊哪些型号的iPhone适合游戏,从iPhone钉子户iPhone6S那一代说起吧,以王者荣耀为测试项目。iPhone6S6SPlus游戏性能一般,只要不是连续1小时及以上美国攻击全球网络,数字安全国家队出手,网友纷纷点赞这几天的俄乌冲突,让大家意识到了舆论战网络战的重要性,事实上美国国安局已经进行了长达十余年的全球网络攻击。昨天一条介绍美国国安局网络攻击手法的消息冲上了热搜,看了热搜才知道,曝光美中国超算中心和超级数据中心报告摘要东数西算工程正式全面启动,将推动全国数据中心适度集聚集约发展。通过在全国布局8个算力枢纽,引导超级数据中心和超算中心向枢纽内集聚,形成10个数据中心集群。中国超算综合实力世界领iPhone14Promax配置已确定,看了价格却转向小米12Pro大家好,我是三月。现如今手机市场风云巨变,新机发布越来越快,这也就意味着旧机淘汰逐渐增快,但其实还有一点可以看到好的产品似乎并不会随着时间流逝就会被大家遗忘,反而是多次提到。最近关vivoX80Pro渲染图曝光,首发6亿像素性能逆天,2K直屏党最爱导读vivoX80Pro渲染图曝光,首发6亿像素性能逆天,2K直屏党最爱vivo品牌现在这几年的上新速度一点都不逊色其他品牌的手机,在这几年除了有子品牌IQOO之外,主线的品牌也受3亿研发7次迭代,无线充电赛道,小米凭什么领跑了整整5年第一?近日,小米公司官方微博正式发布小米小感量磁吸无线充电预研技术磁吸无线充电功率最高可达50W,损耗比目前已有的技术要再降低50。这是小米继2018年首次推出无线充电后,第7次跨越式的8500mAh电霸诞生,8256G不过1499!金立这次干得漂亮国产手机大面积起步是在2012年左右,这一年基本上小米OV华为等开始冲击智能机市场,在这之后,国产手机真正开启了物竞天择,不进则退的时代。实际上相对于小米OV来说,金立这个国产手机北京日报评论算法怎么算由谁说了算互联网信息服务算法推荐管理规定本月起正式施行。作为我国第一部专门针对算法推荐的法规,该法从信息服务规范用户权益保护法律责任等方面,全面系统地为算法定出规则划出边界。这也意味着,算法