首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
beego
Coding
V2EX  ›  Go

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

  •  
  •   flyspace15 · 2017-06-08 10:32:37 +08:00 · 2335 次点击
    这是一个创建于 917 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    25 回复  |  直到 2017-06-09 10:52:55 +08:00
        1
    reus   2017-06-08 10:41:02 +08:00
    当然不适合。不要照搬其他语言的写法。
        2
    plqws   2017-06-08 11:35:03 +08:00 via iPhone
    oop 和 fp 都鸡肋的一门神奇语言
        3
    rrfeng   2017-06-08 11:52:33 +08:00
    面向 err != nil 编程 XD

    其实是面向接口编程。接受了这个设定还蛮不错的
        4
    holmesabc   2017-06-08 11:53:03 +08:00
    把 Go 看做 C,一切豁然开朗
        5
    hjc4869   2017-06-08 11:54:09 +08:00 via Android
    不适合
        6
    Morriaty   2017-06-08 12:04:29 +08:00
    go 没有继承
        7
    SuperMild   2017-06-08 12:17:43 +08:00
    golang 连 class 都没有,所谓的方法也只是函数的语法糖。

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

    第一门语言是 PHP
        15
    xyjtou   2017-06-08 18:19:34 +08:00
    @0asis

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

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

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

    面向对象,你想写当然可以,更何况 C 都可以封装
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1652 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 32ms · UTC 00:02 · PVG 08:02 · LAX 16:02 · JFK 19:02
    ♥ Do have faith in what you're doing.