The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
flyspace15

Go 适合用面向对象的方式编程吗?

  •  
  •   flyspace15 · Jun 8, 2017 · 4364 views
    This topic created in 3275 days ago, the information mentioned may be changed or developed.

    刚入坑,网上看了一些关于 Go 中使用面向对象的方法,感觉很难理解

    25 replies    2017-06-09 10:52:55 +08:00
    reus
        1
    reus  
       Jun 8, 2017
    当然不适合。不要照搬其他语言的写法。
    plqws
        2
    plqws  
       Jun 8, 2017 via iPhone
    oop 和 fp 都鸡肋的一门神奇语言
    rrfeng
        3
    rrfeng  
       Jun 8, 2017
    面向 err != nil 编程 XD

    其实是面向接口编程。接受了这个设定还蛮不错的
    holmesabc
        4
    holmesabc  
       Jun 8, 2017
    把 Go 看做 C,一切豁然开朗
    hjc4869
        5
    hjc4869  
       Jun 8, 2017 via Android
    不适合
    Morriaty
        6
    Morriaty  
       Jun 8, 2017
    go 没有继承
    SuperMild
        7
    SuperMild  
       Jun 8, 2017
    golang 连 class 都没有,所谓的方法也只是函数的语法糖。

    不过不支持经典的面向对象是故意设计成这样的,有很多优点。
    gowk
        8
    gowk  
       Jun 8, 2017   ❤️ 1
    fatedier
        9
    fatedier  
       Jun 8, 2017
    面向接口编程
    inFinityzc
        10
    inFinityzc  
       Jun 8, 2017
    面向 err != nil 编程 +1
    flyspace15
        11
    flyspace15  
    OP
       Jun 8, 2017
    @gowk 就是看打这篇文章的翻译版,感觉如果这么搞面向对象,代码写起来应该会很痛苦,看代码的人更痛苦吧
    weer0026
        12
    weer0026  
       Jun 8, 2017
    这么一说是不适合,我之前还一直硬写成面向对象的,思维僵化了。
    @SuperMild #7
    0asis
        13
    0asis  
       Jun 8, 2017 via iPhone
    学了半天 Clojure 发现没有什么应用场景,弃坑了,可惜了这么优美的语法(以及若干买书的钱)
    lepig
        14
    lepig  
       Jun 8, 2017
    想请教下。没有 C/C++/Java 基础可以直接学 Go 吗?

    第一门语言是 PHP
    xyjtou
        15
    xyjtou  
       Jun 8, 2017
    @0asis

    据说 Clojure 是当今全球程序员薪资排名第一的开发语言呐
    ThinkCat
        16
    ThinkCat  
       Jun 8, 2017
    @0asis clojure 这 lisp 语法看上去 确实好新鲜
    vus520
        17
    vus520  
       Jun 8, 2017   ❤️ 2
    @lepig 有 php 的基础很容易入门,理解指针和引用会麻烦一点。

    对了,处理 Json 会让你无比怀念 php。
    0asis
        18
    0asis  
       Jun 8, 2017 via iPhone
    @xyjtou 大概是因为 lisp 的语法拦住了大部分初级程序员吧
    u5f20u98de
        19
    u5f20u98de  
       Jun 8, 2017
    Go 有面向对象?其实那只是操作结构体的函数而已。

    还有 err != nil 不一定非要这么写这么多,
    如果有大量出错就不继续执行的可以封个 func 有错误直接 panic 然后在 defer 里 recover 下,省好多事情。
    nazor
        20
    nazor  
       Jun 8, 2017
    有得必有失,要是非常完美,那就会淘汰很多语言了。
    SlipStupig
        21
    SlipStupig  
       Jun 8, 2017
    @Morriaty 还是又继承的,跟 C 语言一样,可以采用 struct 继承
    zjsxwc
        22
    zjsxwc  
       Jun 8, 2017 via Android
    应用 oop 的思想完全没问题,虽然没有了继承,但仍旧可以使用组合以及 mixin 的方式来处理对象关系。
    HarrisonZ
        23
    HarrisonZ  
       Jun 9, 2017
    golang 适合 oop 啊,只是不要继承,使用组合的方式扩展类。interface 完美支持 多态。还不要多余的声明,只要实现了 interface 定义的方法即可
    HarrisonZ
        24
    HarrisonZ  
       Jun 9, 2017
    @SlipStupig struct 怎么继承,最多是组合吧。Rob pike 特别不喜欢继承
    qianguozheng
        25
    qianguozheng  
       Jun 9, 2017
    go 注重设计。而不仅仅是代码复用。
    效率是她的一大特征。

    面向对象,你想写当然可以,更何况 C 都可以封装
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4149 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 69ms · UTC 00:07 · PVG 08:07 · LAX 17:07 · JFK 20:07
    ♥ Do have faith in what you're doing.