Go 适合用面向对象的方式编程吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
flyspace15

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

  •  
  •   flyspace15 Jun 8, 2017 4275 views
    This topic created in 3244 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     1041 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 74ms UTC 23:20 PVG 07:20 LAX 16:20 JFK 19:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86