博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
来玩go之面向对象
阅读量:4141 次
发布时间:2019-05-25

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

       看下面向过程的代码:

package mainimport "fmt"type Integer int func adder(x, y Integer) Integer {    return x + y}func main() {    var x Integer = 1    var y Integer = 2    fmt.Println(adder(x, y))}

        结果:3

 

        面向对象要怎么写?

package mainimport "fmt"type Integer int func (i Integer) adder(x Integer) {    i += x}func main() {    var x Integer = 1    var y Integer = 2    x.adder(y)    fmt.Println(x)}

      结果:1

      居然不是3, 问题在哪里呢? 看代码:

package mainimport "fmt"type Integer int func (i *Integer) adder(x Integer) {    *i += x}func main() {    var x Integer = 1    var y Integer = 2    x.adder(y)    fmt.Println(x)}

        结果:3

  

       注意,在调用x.add(y)时,实际上是把x的地址传给给adder函数的i指针。

 

转载地址:http://lczti.baihongyu.com/

你可能感兴趣的文章
码农吐糟同事:写代码低调点不行么?空格回车键与你有仇吗?
查看>>
阿里p8程序员四年提交6000次代码的确有功,但一次错误让人唏嘘!
查看>>
一道技术问题引起的遐想,最后得出结论技术的本质是多么的朴实!
查看>>
985硕士:非科班自学编程感觉还不如培训班出来的,硕士白读了?
查看>>
你准备写代码到多少岁?程序员们是这么回答的!
查看>>
码农:和产品对一天需求,产品经理的需求是对完了,可我代码呢?
查看>>
程序员过年回家该怎么给亲戚朋友解释自己的职业?
查看>>
技术架构师的日常工作是什么?网友:搭框架,写公共方法?
查看>>
第四章 微信飞机大战
查看>>
九度:题目1008:最短路径问题
查看>>
九度Online Judge
查看>>
九度:题目1027:欧拉回路
查看>>
九度:题目1012:畅通工程
查看>>
九度:题目1017:还是畅通工程
查看>>
九度:题目1034:寻找大富翁
查看>>
第六章 背包问题——01背包
查看>>
51nod 分类
查看>>
1136 . 欧拉函数
查看>>
面试题:强制类型转换
查看>>
Decorator模式
查看>>