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

说 Go 语言写不了业务逻辑的请进

  •  
  •   Hanggi · 2022-08-08 12:23:50 +08:00 · 15502 次点击
    这是一个创建于 838 天前的主题,其中的信息可能已经有所发展或是发生改变。

    并不打算引战,单纯出于好奇。

    https://github.com/gin-gonic/gin
    https://github.com/beego/beego
    https://github.com/labstack/echo

    把前几名的 Go 语言后端框架加一起都 10 万星了。

    https://github.com/spring-projects/spring-boot
    https://github.com/laravel/laravel

    Gin 6 万 1 ,spring-boot 6 万 2 ,laravel 7 万。
    虽然不能说明一且,但至少说明很多人在用。


    首先强类型语言灵活性肯定是不如脚本语言的,所以没必要争个高低,PHP 、Node.js 、Python 这类脚本语言写业务逻辑能力是最强的。

    但在可维护性上,强类型语言是比脚本语言好很多,所以 Typescript 的可维护性是远胜于 Javascript 的。


    回到 Go 语言,
    首先要明确的是 Go 语言是一种为了最大化编译速度而牺牲语言特性的一种语言。

    很多人说 Go 语言写起来痛苦,说的其实是那些理应支持的语法糖或工具函数在 Go 语言里并不提供,而需要自己去写所带来的痛苦。不提供不意味着无法实现,只是让你用最基础的语法结构去实现,换来的是更快的编译速度和非常低的阅读门槛。

    对于 if err != nil 只说一句,Error 是一种值。
    https://go.dev/blog/errors-are-values
    (过去也有人提议加入 Try Catch ,但都被否决了)


    最后,还是要看你的需求是什么,Go 语言写业务逻辑可能不是最佳选择,但确实很多人在用 Go 写业务逻辑,它的特性满足了一些人的需求,特别是在云原生领域。

    说写不了的,可以把你的场景细节分享出来,
    解决方案都是有的,接不接受是每个人自己的选择,但是光说 Go 语言写不了业务逻辑,又不说到底是什么场景。
    谁能知道到底是 Go 语言写不了业务逻辑,还是你的编码或理解能力上有不足呢?

    119 条回复    2023-12-26 13:27:19 +08:00
    1  2  
    luob
        1
    luob  
       2022-08-08 12:34:45 +08:00   ❤️ 40
    冷知识,( )也是能吃的

    但是作为一个灵长类人科人属人种生物,实在没必要花大力气证明这件事,要不然会让大家怀疑你的身份。
    yedanten
        2
    yedanten  
       2022-08-08 12:36:55 +08:00 via Android   ❤️ 17
    写不了业务 x
    写 curd 很痛苦√

    如果把写业务=写 web 应用,那确实可以说,不建议
    tairan2006
        3
    tairan2006  
       2022-08-08 12:37:20 +08:00   ❤️ 12
    能用和好用不是一个概念,用 C/汇编啥都能搓出来。

    golang 在复杂业务这块生态缺失是很显然的,你连个好用的工作流引擎都找不到吧。
    BBCCBB
        4
    BBCCBB  
       2022-08-08 12:40:18 +08:00
    c++也可以写 web, 但能用和好用是有区别的
    BeautifulSoap
        5
    BeautifulSoap  
       2022-08-08 12:51:20 +08:00   ❤️ 3
    其他感觉还好,但 Go 写 Entity 到 DTO 之类的转换写到吐血是真的
    wangyzj
        6
    wangyzj  
       2022-08-08 12:53:15 +08:00
    @tairan2006 #3 就工作流引擎这块
    所有语言的工作流找来找去最后还是 java 的 activiti 家族最好使
    虽然我也不明白为啥
    neteroster
        7
    neteroster  
       2022-08-08 12:54:30 +08:00   ❤️ 3
    没人说写不了吧,都是图灵完备的啥业务逻辑不能写?关键是能写和能写得好,能写得快,能写出可读性高和可维护性好的代码中间是有距离的。
    Hanggi
        8
    Hanggi  
    OP
       2022-08-08 12:59:03 +08:00
    @BeautifulSoap 一个结构体,定义好 tag ,一行映射不就解决了吗?
    Hanggi
        9
    Hanggi  
    OP
       2022-08-08 13:00:32 +08:00
    @tairan2006
    @BBCCBB
    所以 Go 语言写业务逻辑是跟 C/C++/汇编是一个级别的是吗?
    那为什么 Go 语言写?用 C/C++ 写出来不是性能更好吗?
    Hanggi
        10
    Hanggi  
    OP
       2022-08-08 13:03:50 +08:00
    @neteroster
    所以 PHP ,Python 能写出高可读和高维护性代码,Go 语言写不出来是吗?
    是语言问题呢,还是编写的人的问题呢?
    yuk1no
        11
    yuk1no  
       2022-08-08 13:05:54 +08:00 via iPhone   ❤️ 3
    流量密码行哇
    Curtion
        12
    Curtion  
       2022-08-08 13:08:55 +08:00
    不是在说写不了吧,任何一个图灵完备的编程语言只要想写都能写业务,只是区别在于合不合适。 说 Go 不适合是相较于其它的解决方案来说的。 至于说写不了的人,那肯定是乱说的,Go 是有一些特殊业务领域比较好用。
    tairan2006
        13
    tairan2006  
       2022-08-08 13:10:18 +08:00   ❤️ 5
    @Hanggi 你要不要看你帖子里自己问了啥…最后一段。

    你这反问搞得我只想 block 你…你看你这回复的几楼,全是反问,攻击性这么强想干啥。
    lix7
        14
    lix7  
       2022-08-08 13:11:53 +08:00   ❤️ 3
    开头说不打算引战,最后人身攻击,可以,block 了
    Mexion
        15
    Mexion  
       2022-08-08 13:17:56 +08:00   ❤️ 3
    有人说过不能写吗,不都是说写的很痛苦吗?这么说 c 语言也可以写啊,为什么不用 C 语言写
    fkdog
        16
    fkdog  
       2022-08-08 13:21:35 +08:00   ❤️ 4
    问一下,还花时间在编程语言这个级别上 battle 的,一般都是毕业几年的啊?
    XCFOX
        17
    XCFOX  
       2022-08-08 13:22:08 +08:00   ❤️ 6
    我个人感触比较深的是 ORM 场景。C# 有 Entity Framework 、TypeScript 有 TypeORM 、MikroORM 、PHP 有 Eloquent 、Kotlin 的 Ktorm 。看过了以上 ORM 再看 Go 的 ORM 实践就很一言难尽。

    优雅的 ORM(TypeORM)是这样的:
    ```
    const article = await articleRepository.findOne({ title:"Tales of Ten Worlds",published:true });
    ```
    从 文字表里取一篇文章,取出来的变量直接从 findOne() 函数里传出来,非常顺畅。

    Go (gorm) 语言是这样的:
    ```
    var article Article
    db.Where(&Article{Title: "Tales of Ten Worlds", Published: true}).First(&article)
    ```
    先声明 article 为 Article ,再传指针到 First() 里,一下子打破了函数式编程的 「没有"副作用"」「不修改状态」的教条,这里将 article 的类型改为其他也不会有编译时错误。

    或者这样(ent)的:
    ```
    article :=client.Article.Query().
    Where(article.TitleEQ("Tales of Ten Worlds"),article.PublishedEQ(true)).Limit(1)
    ```
    这样确保了编译时类型安全但将查询条件改成了指令式的罗列,极大损失了简洁性。
    agdhole
        18
    agdhole  
       2022-08-08 13:25:41 +08:00
    楼上提到了 ef core ,底层用 linq 去操作 sql 或者 list 等等,体验好太多了
    FreeEx
        19
    FreeEx  
       2022-08-08 13:28:08 +08:00   ❤️ 1
    我感觉主要是因为写 web 应用没有一个最佳实践出来,写起来比较痛苦,尤其是新人进入团队去改之前的代码。

    例如

    目录结构怎么划分?
    是搞全局函数还是结构体挂方法?结构体挂方法的话如何实例化?结构体直接有依赖关系怎么实例化?
    db 是全局的还是通过参数传递?
    需不需要分层 ApiHandler 、Service 、Repo ?
    ...

    问题太多了,不说每一个公司吧,就说每一个项目,都可能是不同的项目结构,百花齐放,I am happy :)
    wonderfulcxm
        20
    wonderfulcxm  
       2022-08-08 13:29:20 +08:00 via iPhone   ❤️ 7
    > 很多人说 Go 语言写起来痛苦,说的其实是那些理应支持的语法糖或工具函数在 Go 语言里并不提供,而需要自己去写所带来的痛苦。不提供不意味着无法实现,只是让你用最基础的语法结构去实现。换来的是更快的编译速度和非常低的阅读门槛。

    恭喜你找到了痛苦之源,而且你那么痛苦实现的功能,人家语言就自带了,质量还更好,你说气不气人吧,如果喜欢自虐,欢迎使用 go 语言。
    coderluan
        21
    coderluan  
       2022-08-08 13:30:04 +08:00
    正文写的挺好,怎么起了这么个烂标题。
    charmToby
        22
    charmToby  
       2022-08-08 13:30:50 +08:00
    语言之争有没有尽头。
    nine
        23
    nine  
       2022-08-08 13:41:54 +08:00
    想用你就用呗。

    至于 Star 的数量问题。你可以搜一下,什么叫“劣币驱逐良币”。

    你觉得 10 块钱的冰淇淋币 2 块钱的好吃,可能是因为你压根没有听说过有 100 块钱的。
    Mrun
        24
    Mrun  
       2022-08-08 13:48:07 +08:00
    @wonderfulcxm #20

    我觉得也是,大部分都是 curd boy ,为什么要在这上面给自己找虐?其他语言有成熟的语法糖,你天天秀我性能好,有个锤子用,大部分项目难维护是性能原因么?
    q1angch0u
        25
    q1angch0u  
       2022-08-08 13:48:51 +08:00
    我的编码或理解能力上有不足。
    musi
        26
    musi  
       2022-08-08 13:51:15 +08:00
    这都能骂起来,还是前端好,只能运行 JavaScript
    RubyJack
        27
    RubyJack  
       2022-08-08 13:51:52 +08:00
    javaboy 马上赶到战场
    Oktfolio
        28
    Oktfolio  
       2022-08-08 13:53:03 +08:00
    第 1 点,因为 go 使用 github 作为依赖仓库,所以 repo 的 star 数普遍偏高。

    go web 框架普遍使用 :param 作为路径参数([API design guide - Google Cloud]( https://cloud.google.com/apis/design/custom_methods)),比如你上面说的 gin ,所以我 star 了 gin 但不用它。
    Leviathann
        29
    Leviathann  
       2022-08-08 13:53:48 +08:00
    @XCFOX 这么看起来这个 gorm 好野鸡啊,连最基本的类型安全都没了,而 ent 做为 FP 大厂的作品观感上就强不少,不愧是创造了 react 的公司
    28Sv0ngQfIE7Yloe
        30
    28Sv0ngQfIE7Yloe  
       2022-08-08 14:01:23 +08:00
    写不了 = 考虑效率 、心智负担后,不选择 go

    在这个为前提上讨论,我觉得没问题呀

    如果是 crud boy 的话,不选择 go 我觉得没问题。。
    28Sv0ngQfIE7Yloe
        31
    28Sv0ngQfIE7Yloe  
       2022-08-08 14:06:48 +08:00   ❤️ 2
    >>> 很多人说 Go 语言写起来痛苦,说的其实是那些理应支持的语法糖或工具函数在 Go 语言里并不提供,而需要自己去写所带来的痛苦。不提供不意味着无法实现,只是让你用最基础的语法结构去实现。换来的是更快的编译速度和非常低的阅读门槛。

    这点真的有人赞同吗?

    接手一个项目还要去看前人封装的数据结构。以及对应的 api ,换一家公司还要重新熟悉
    2024
        32
    2024  
       2022-08-08 14:12:15 +08:00
    我写 go 跟写 php 一样,平时就 curd 多,现在一年下来了,内部积累的代码有时候可能比 php 还快了。
    贴一段 go 代码, 有差别吗
    ~~~~
    // 读取列表数据 select * from users where id > 1 and create_ed >= now() limit 16
    users := NewOrmUsers().WhereIdGt(1).WhereCreatedAtGte(database.Now()).Limit(15).Get()
    fmt.Println(users)
    ~~~~

    https://github.com/go-home-admin/go-admin/blob/main/app/entity/demo/user_test.go
    dqzcwxb
        33
    dqzcwxb  
       2022-08-08 14:12:18 +08:00   ❤️ 1
    @tairan2006 #13 我只想说,暴露 go 吹本质了
    "你不吹 go,go 吹就骂你"
    fournoas
        34
    fournoas  
       2022-08-08 14:13:44 +08:00
    “又不是不能用”
    TWorldIsNButThis
        35
    TWorldIsNButThis  
       2022-08-08 14:14:09 +08:00 via iPhone   ❤️ 1
    没有便捷语法或被广泛采用的库的支持,那么在实际上的业务开发里基本就等于没有这个功能
    kindjeff
        36
    kindjeff  
       2022-08-08 14:15:07 +08:00
    新的风暴已经出现
    ufan0
        37
    ufan0  
       2022-08-08 14:19:42 +08:00
    我还在上大学的时候看到部分公司开始使用 go 进行编写基础组件,感觉挺不错的。

    毕业后开始参加工作接触到金融业务复杂系统,就这,想不懂为什么用 go ,kpi or okr boy ?
    mxT52CRuqR6o5
        38
    mxT52CRuqR6o5  
       2022-08-08 14:23:29 +08:00
    反向推销可还行
    arischow
        39
    arischow  
       2022-08-08 14:26:06 +08:00
    啊,比 star ?
    icyalala
        40
    icyalala  
       2022-08-08 14:27:30 +08:00
    @Hanggi 这么说用 C 写业务逻辑也有啊: https://facil.io/ ,把帖子里的 Go 换成 C 看看?
    litguy
        41
    litguy  
       2022-08-08 14:28:25 +08:00   ❤️ 1
    这明显胡说八道了,不是说写不了,是写起来不 happy
    我们的产品是用 C++ 写 web 的
    上家公司是 C 写 web
    不是不能写,是工作量明显高于那些 web 专用语言
    KaynW
        42
    KaynW  
       2022-08-08 14:29:11 +08:00   ❤️ 3
    又到了我最喜欢的语言大战环节
    tobepro
        43
    tobepro  
       2022-08-08 14:29:22 +08:00   ❤️ 3
    Go 真要适合,你就不会来这么努力去证明了。有这精力还是好好去贡献点代码把,为 Go 社区做点贡献。到了真正强大的时候,不用你辩解大家也都会认为 Go 可以写复杂业务逻辑了。
    blless
        44
    blless  
       2022-08-08 14:31:01 +08:00
    @Morii #31 对公司而言,人力也是资源,也是流动的。接手一个项目本来就要熟悉之前的封装,除非你一直都只写最基础的业务。别人经验我不清楚,但是 Go 的门槛确实低,基本上业务层面上封装概念搞懂就行。拿 Python 举例,我见过比较恶心的一些例子,使用类似 flask 的 requst 绑定线程的变量,数据结构全程动态生成,一些自定义的装饰器,locals()获取当前变量名当作 key/value ,诸如此类等等等等。每次碰到这些东西,我就觉得 Go 设计太特么好了
    nash
        45
    nash  
       2022-08-08 14:39:33 +08:00
    真正的工程师是从来不屑争论这种话题的
    FightPig
        46
    FightPig  
       2022-08-08 14:46:20 +08:00   ❤️ 1
    只要你喜欢,用汇编都没人管。我 rails 用的爽的,干嘛找虐用 go 来写,后面并发也没到那个程度。我用 go 写的最多的是小工具,web 自己写了一套生成工具,主要用来写个 cms ,给别人用的
    LeegoYih
        47
    LeegoYih  
       2022-08-08 14:48:06 +08:00   ❤️ 1
    有点饭圈的味道了
    storyxc
        48
    storyxc  
       2022-08-08 14:58:01 +08:00
    日经贴
    SeaTac
        49
    SeaTac  
       2022-08-08 15:01:55 +08:00   ❤️ 2
    钱没赚几个 代码没写几行 吵架倒是一流
    victor
        50
    victor  
       2022-08-08 15:05:01 +08:00   ❤️ 1
    star 数量能代表啥?中文资料收集类的 repo ,star 上万的有好多个。
    Hanggi
        51
    Hanggi  
    OP
       2022-08-08 15:14:16 +08:00
    @tairan2006
    @lix7
    @Mexion
    答非所问,所以追问而已,如果觉得有攻击性,那我先说声抱歉了。
    我也说了,不管是痛苦还是什么,把场景说出来,分享一下。
    不是说我要去评判,而是分享出来,大家探讨一下。

    说人身攻击是指“编写的人的问题呢?”这句话吗?
    代码的质量跟编写的人经验和习惯相关(也跟项目进度等很多因素相关),
    如果用 PHP 老手和 Go 语言新手写出来的代码比较可读性,其实意义也不大,毕竟 Go 语言比较新。

    有人说过不能写吗,确实有人说了没法写,这也是我的疑问点。
    对于 C 语言,Go 的定位其实并不适合和 C 语言比较,且如果 Go 语言编写体验跟 C 语言差不多,那为什么要用 Go 语言呢,因为 C 语言性能更好。
    Hanggi
        52
    Hanggi  
    OP
       2022-08-08 15:19:07 +08:00
    @fkdog
    问题背景很简单,

    很多人说 Go 语言写不了业务逻辑(或者写不好,或者写起来痛苦),
    但是又有很多人在问,有个项目到底用 Go 还是 PHP (或者 Java...)

    也就说明,有一些人,他看到 Go 语言很火,并且在后端领域有很多应用,想加入 Go 语言生态,
    但是又看到很多人说 Go 语言写不了,不适合写业务逻辑,而感到迷茫。

    所以,我发了个贴,希望那些说 Go 语言不适合写业务逻辑的人,
    把你们的场景分享出来,看看问题到底出在哪里。
    dbskcnc
        53
    dbskcnc  
       2022-08-08 15:20:01 +08:00   ❤️ 2
    我来挺一下 lz, 不管有多少人不屑于 go ,事实就是越来越多的业务用 go 来写了。
    LeegoYih
        54
    LeegoYih  
       2022-08-08 15:26:46 +08:00
    @Hanggi #52
    我觉得你可以把你认为写的优秀的业务代码示例贴出来,给大家学习一下应该如何优雅地写。
    只让别人分享代码,然后你轻描淡写一句“是你代码写的烂”,这没法让人信服吧?
    Slurp
        55
    Slurp  
       2022-08-08 15:29:41 +08:00   ❤️ 4
    1. Go 语言性能高吹的成分居多,你列的 Gin 在 TechemPower 的排名里面排第 63 位,是第一名性能的 23%。Fiber 框架性能在 Go 里最高,然而 Star 不如 Gin 。整个 Go 的平均性能可能和 Java 差不了多少... 说 Star 数多少多少真心没啥意义…… Go 这么火,你还是要搞清楚一点不是他语言多厉害,纯纯的就是微服务撑起来的。

    2. Go 还可维护。动不动就是 codegen ,类型系统不是简约,是简陋。天天就是 if err != nil ,快赶上 C 了。隔壁 Rust 比你 Go 更 native ,怎么人的 Result 类型这么正常。都是现代语言,不要求你多高雅,正常一点总行吧。if err != nil ,这种模板代码,真的和 Java 里判空一样啰嗦……

    没有 native 命,却患 native 病,是对 Go 语言最好的描述。

    ---

    你用 Go 写写中间件挺好的,没人反对你。硬要扯业务代码全都用 Go 写,这不自虐。
    lifeintools
        56
    lifeintools  
       2022-08-08 15:39:20 +08:00
    你喜欢就用呗。这还值得开个贴讨论吗?
    singerll
        57
    singerll  
       2022-08-08 15:39:40 +08:00 via Android
    复杂的业务根本不是一两句话加几行代码都能说清的,你让大家举例根本就不现实
    Hanggi
        58
    Hanggi  
    OP
       2022-08-08 15:44:33 +08:00
    @XCFOX
    确实 ORM 这块有这个问题,

    Typeorm 的查询方式感觉依然是弱类型,要么包一层 interface 不然也是有写错的可能性。

    GORM 确实有不少槽点,但是不管代码量还是心智上并没有太大负担(个人感觉),因为变量是未初始化的。
    不知道你怎么想。

    ent 的话通过 code generation 解决了类型安全问题,但是灵活性上也确实有损失。

    但是比起用 xml 定义这些,感觉这种方式还是可以接受的,至少编写起来没有太大压力。
    q474818917
        59
    q474818917  
       2022-08-08 15:46:54 +08:00
    程序员都是一根筋,你咋不思考思考你为何不是北京人,在这方面较劲有啥用
    ChrisFreeMan
        60
    ChrisFreeMan  
       2022-08-08 15:46:56 +08:00
    尝试说服别人是一件容易让自己发疯的事情,放弃说服他人,专注做好自己。
    Hanggi
        61
    Hanggi  
    OP
       2022-08-08 15:50:13 +08:00
    @Slurp
    Go 语言的性能从来都不是他的最大亮点,因为 Go 有 GC ,性能在极端情况下是没法和 C/C++ 比的,和 Java 比一下还差不多。
    wdwwtzy
        62
    wdwwtzy  
       2022-08-08 15:50:18 +08:00
    严重同意 1 楼 2 楼和 17 楼
    Hanggi
        63
    Hanggi  
    OP
       2022-08-08 15:51:35 +08:00
    @singerll
    对,问题就在这,
    一两句话说不清楚复杂的业务逻辑,但是一两句话就可以定义一门语言写不了业务逻辑。
    而事实上很多人在写。
    Hanggi
        64
    Hanggi  
    OP
       2022-08-08 15:55:52 +08:00
    @ChrisFreeMan
    对说服别人一点兴趣都没有,
    只是看到某种现象,发帖讨论一下。
    dog82
        65
    dog82  
       2022-08-08 15:58:53 +08:00   ❤️ 2
    docker 、redis 、etcd 、tidb 都是用 go 写的,区块链也是 go 的天下

    但是 go 依然是很拗口的语言,特别是从 java 转过来的
    singerll
        66
    singerll  
       2022-08-08 15:59:24 +08:00
    @Hanggi “一两句话说不清楚复杂的业务逻辑,但是一两句话就可以定义一门语言写不了业务逻辑。”
    你是 etc 吗
    Bazingal
        67
    Bazingal  
       2022-08-08 16:01:24 +08:00   ❤️ 1
    不明白云原生跟 go 写业务有什么关系,没错 k8s 和 docker 都是用 go 写的,但是这跟你用 go 写业务有什么关系,难道用 go 写有加成?别的语言照样跑在 docker 、k8s 上,生态比你好,开发速度比你快,性能比你强,扯什么云原生有什么意义。go 之所以招黑就是因为很多 go 粉太双标,自己没有的就是又不是不能用,我们不需要,自己有的就吹得好像只有自己有一样
    yogogo
        68
    yogogo  
       2022-08-08 16:13:07 +08:00
    工具而已,别那么较真
    allen9009
        69
    allen9009  
       2022-08-08 16:14:34 +08:00
    语言不是界限,用啥语言看场景
    herozzm
        70
    herozzm  
       2022-08-08 16:14:58 +08:00
    能写,痛苦而已
    keepeye
        71
    keepeye  
       2022-08-08 16:16:19 +08:00
    脚本仔永远无法理解,他们只顾自己写的爽
    alteremliu
        72
    alteremliu  
       2022-08-08 16:17:09 +08:00
    怎么可能不能写呢,java 已经写完了 CRUD ,你还在写 entity
    AprilNovember
        73
    AprilNovember  
       2022-08-08 16:18:52 +08:00   ❤️ 4
    go 的魔怔人最多 真不是乱说的😅
    Hanggi
        74
    Hanggi  
    OP
       2022-08-08 16:20:10 +08:00
    @Bazingal
    你这段话攻击性还是挺强的,本来这种话不太回的,就回一次。

    k8s 那么复杂一个系统,调控那么多容器,去除底层的一些 low level 逻辑,给用户提供的接口是没有业务逻辑的吗。
    难道只有 CRUD 才是业务逻辑。

    还有,好多人说什么 Go 吹,Go 粉,这种论调其实挺无趣的。
    写过 Go 语言的人哪个不是从其他语言过来的,现在已经很少有人会站某一门语言去怼其他语言,因为你站的语言和你怼的语言你都会,跟左右互搏有什么区别呢。
    只有那些只会一门语言,生怕自己的饭碗被抢走的人才会如此敏感吧。

    没什么其他意思,只想就事论事,讨论讨论问题,如果伤害到某些人,先说声抱歉。
    希望不要把问题带到奇怪的方向。
    Mexion
        75
    Mexion  
       2022-08-08 16:28:29 +08:00   ❤️ 5
    @Hanggi 事实上这不是 ORM 的问题,本质上是 Go 这门语言的问题,Go 由于追求极致简陋抽象能力太差,支持的特性太少,在使用中可能遇到:要么多写大量重复代码,要么各种转型,要么丢失安全特性变成动态语言,要么各种 for 循环等等等......太多了,我都不想一一点出来,实在丑陋繁琐至极,毫无优雅可言,然后就是特性弱就算了,还非要强吹设计哲学,实际上挫的不行。当然,我也不否认 go 有它的优点,go 生来就不是做 web 的料,在它擅长的领域发光发热就好了,你要说做 web 可不可以,当然也可以,最重要的一点就是:又不是不能用!
    Bazingal
        76
    Bazingal  
       2022-08-08 16:30:25 +08:00
    @Hanggi 攻击性很强是指把事实说出来吗?另外我没说 go 写不了业务,上面很多人也说了,能写不代表合适,c 和汇编也能写业务,但是你觉得合适吗
    interim
        77
    interim  
       2022-08-08 16:42:56 +08:00   ❤️ 2
    @dog82 啊这,redis 怎么就成 go 写的了?
    Mexion
        78
    Mexion  
       2022-08-08 17:01:30 +08:00   ❤️ 1
    @interim go 是要替代 c 的,所以 c 写的 == go 写的 ,没毛病
    ericguo
        79
    ericguo  
       2022-08-08 17:02:45 +08:00
    @XCFOX > const article = await articleRepository.findOne({ title:"Tales of Ten Worlds",published:true });

    论优雅 Rails 还真没怕过谁。article = Article.find_by title: 'Tales of Ten Worlds', published: true
    yx1989
        80
    yx1989  
       2022-08-08 17:03:57 +08:00
    Java 库的 github star 数量确实偏少。当年各种 Python 都好几万 star 的时候,Spring 的 star 才几千。

    不过 star 多并不能说明适合写业务逻辑,仅能说明这个库比较 成熟 or 热门。
    lancelock
        81
    lancelock  
       2022-08-08 17:12:31 +08:00   ❤️ 1
    一股子饭圈味
    nyakoy
        82
    nyakoy  
       2022-08-08 17:18:43 +08:00
    每月一战,这个月来的有点早。
    datafeng
        83
    datafeng  
       2022-08-08 17:31:12 +08:00   ❤️ 1
    @nyakoy 这个月有点不调,嗯就喜欢这种帖子,顺便说一下 PHP 是最好的语言..
    pein
        84
    pein  
       2022-08-08 17:46:22 +08:00
    web 方面,现在 Go 语言在性能上也已经比不过 php 了,看最新压测排行的第 35 位 https://www.techempower.com/benchmarks/#section=data-r21&test=fortune
    Kiriri
        85
    Kiriri  
       2022-08-08 17:50:08 +08:00   ❤️ 1
    没有人说 go 写不了业务逻辑, 能写和写的舒服是两码事
    dqzcwxb
        86
    dqzcwxb  
       2022-08-08 17:51:56 +08:00

    先有鸿钧后有天,golang 还在鸿钧前
    zapper
        87
    zapper  
       2022-08-08 17:57:19 +08:00   ❤️ 2
    你们在吵的时候我一个叫小申的同事又手搓 01 并部署一套业务了,谁的问题?
    Al0rid4l
        88
    Al0rid4l  
       2022-08-08 18:36:06 +08:00   ❤️ 3
    冷知识: Python 是强类型语言
    强类型弱类型静态类型动态类型都分不清楚...看到「强类型语言是比脚本语言好很多」就不想看下去了
    XCFOX
        89
    XCFOX  
       2022-08-08 19:26:47 +08:00
    @Hanggi #58
    TypeScript 的类型系统是十分强大的。得益于 TypeScript 的装饰器与泛型系统,TypeORM 的查询参数是强类型的,无需包一层 interface ,在编译时就会有类型检查。
    相比之下,go 要实现比肩 TypeScript 的类型安全 就只能参考 ent 这种 code generation 的模式。
    raykle
        90
    raykle  
       2022-08-08 21:18:40 +08:00
    袁隆平袁老的问题
    GeruzoniAnsasu
        91
    GeruzoniAnsasu  
       2022-08-08 21:31:53 +08:00
    OP 如果搞得明白会在语言帖子里吵起来的都是些

    1. 没有权限或能力控制选型
    2. 搞不明白自己的系统需要什么特性
    3. 只接触过两三种语言写过一两种范式

    的人,就不会发这个帖子了



    「为什么用 go 写 web 」跟「为什么用 js 写 arduino 」 是完全一致的问题,想想为什么后者没人吵
    Sendya
        92
    Sendya  
       2022-08-08 22:14:46 +08:00 via Android
    说句实话,写了几年,写 crud 多少有点痛苦。
    inframe
        93
    inframe  
       2022-08-08 22:53:22 +08:00
    哪个能让我今天最早下班,我就用哪个;
    所以我选择 Python😎
    dhssingle
        94
    dhssingle  
       2022-08-08 22:54:43 +08:00
    C# EF Core

    var article = await context.Articles.FirstOrDefaultAsync(x => x.Title == "Tales of Ten Worlds")
    Aloento
        95
    Aloento  
       2022-08-08 23:50:02 +08:00
    写 curd 很痛苦
    then ,ASM 也能写,你用吗?
    limon
        96
    limon  
       2022-08-08 23:56:30 +08:00   ❤️ 1
    去掉 Goroutines 这门语言我不会多看一眼,就这么简单
    Actrace
        97
    Actrace  
       2022-08-09 00:01:11 +08:00   ❤️ 1
    我觉得业务问题倒是其次,之后可以通过迭代来增加功能以解决这些问题。

    go 现在最大的问题是过分依赖 github ,这是从语言层面的依赖,更具体一些,就是产品定位。
    作为一个工具,肯定不能去依赖一家商业公司来实现某些功能。没有哪家公司或者开发者会希望明天 github 没了,go 就不行了。这跟 serverless 的包袱几乎一致了。
    zggsong
        98
    zggsong  
       2022-08-09 00:05:11 +08:00 via iPhone   ❤️ 1
    @dhssingle 有一说一,作为菜鸟我只写过 c#和 go ,crud 方面,操作数据方面 c#的确太舒服了
    ccppgo
        99
    ccppgo  
       2022-08-09 08:44:44 +08:00
    @dog82 redis 什么时候成了 go 写的,我版本落后了?
    p1gd0g
        100
    p1gd0g  
       2022-08-09 09:38:15 +08:00   ❤️ 1
    我一个全栈( c#,go )体会最深了,早点下班不香吗
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2662 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:44 · PVG 19:44 · LAX 03:44 · JFK 06:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.