Go语言的面向对象

举报
JavaEdge 发表于 2021/06/04 00:03:20 2021/06/04
【摘要】 go语言仅支持封装,不支持继承和多态。 go语言没有class,只有struct。 结构的定义 go 语言即使是指针,不像 C语言使用->也可一直使用.引用下去go 没有构造器,但可使用工厂函数 那么这到底创建在了堆还是栈呢? 不需要知道。如果返回了没人用就在栈上 如果返回了有人用,就在堆,并参与到 GC。 所以没必要知道,编译器自己都知道。 参数前后...

go语言仅支持封装,不支持继承和多态。
go语言没有class,只有struct。

结构的定义

  • go 语言即使是指针,不像 C语言使用->也可一直使用.引用下去
  • go 没有构造器,但可使用工厂函数

    那么这到底创建在了堆还是栈呢?
    不需要知道。如果返回了没人用就在栈上
    如果返回了有人用,就在堆,并参与到 GC。
    所以没必要知道,编译器自己都知道。

参数前后区别

  • 参数定义在函数名前后有啥区别呢?
  • 使用区别

    Go都是值传递,记住了,和 Java 一样。

使用指针作为方法接收者

  • 只有使用指针才可以改变结构内容
  • nil 指针也可调用方法(Go 很特殊)

值接收者 V.S 指针接收者

  • 要改变内容必须使用指针接收者
  • 结构过大也考虑使用指针接收者
  • 一致性:如有指针接收者,最好都是指针接收者

值接收者才是go语言特有的!
值/指针接收者均可接收值/指针

文章来源: javaedge.blog.csdn.net,作者:JavaEdge.,版权归原作者所有,如需转载,请联系作者。

原文链接:javaedge.blog.csdn.net/article/details/111591971

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。