美文网首页
19年第34周:Go 我没对象-Golang语言 面向对象

19年第34周:Go 我没对象-Golang语言 面向对象

作者: 习惯研究所所长 | 来源:发表于2019-08-23 00:52 被阅读0次

    一、前言

    • Unix 一切皆文件
    • C++/Java/Python 一切皆对象
    • Golang 一切皆类型

    二、Go为什么没对象?

    Go没对象,为什么呢?这个好难回答,不如换个问题:“You 为啥没对象?”
    哈哈,开玩笑,我不知道。

    三、为什么要有对象呢?不要对象不行么?

    用C的时候,嗯,没有对象是很正常的。
    学C++的时候,第一堂课,就是:“恭喜在座的各位,你们开始有对象了。”从此,对象是必须的。
    学Go的时候,啥,没对象,没对象怎么过,没法活了。

    四、没对象怎么办?

    没对象,又想要原来那种有对象的日子,怎么办?
    好说好说,那就是假装自己有对象
    Go可以通过类型的组合来表现出让自己有对象。
    这就好比,好多年前啊,一哥们给我返会一个bool类型,在他的语法里,假是 false, 真是 true,我这里是假是 False, 真是 True,哥们x想返会一个“假”为了兼容,可真是大好人,给我返会了一个字符串型的“False”
    于是啊,Go 没有继承,就找了干儿子当儿子。然后,表现出我有继承人。

    • Golang
    package main
    // 1,养父类
    type AdoptedFather struct{
    }
    // 2, 养父的遗产
    func (af AdoptedFather ) Show(){
       println("I'm your Father! You succeeded in inheriting my legacy.")
    }
    // 3, 父类
    type AdoptedChild struct{
        AdoptedFather 
    }
    
    func main() {
       child := AdoptedChild {} // 干儿子
       child.Show()  // 继承干爹的遗产
    }
    
    • Python
    #!usr/bin/env python
    # coding: utf-8
    
    class Father(object):
        def Show(self):
            print("I'm your Father! You succeeded in inheriting my legacy.")
    
    
    class Child(Father):
        pass
    
    
    def main():
        child = Child()
        child.Show()
    
    
    if __name__ == "__main__":
        main()
    

    相关文章

      网友评论

          本文标题:19年第34周:Go 我没对象-Golang语言 面向对象

          本文链接:https://www.haomeiwen.com/subject/xouasctx.html