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

我好像患上了「Golang 斯德哥尔摩综合症」

  •  
  •   Morii · 2022-05-09 01:50:58 +08:00 · 8316 次点击
    这是一个创建于 719 天前的主题,其中的信息可能已经有所发展或是发生改变。

    转 go 半年,初期痛不欲生,难以想象 go 的 web 开发生态如此简陋

    写了半年感觉慢慢适应了,虽然很多东西都要手写(之前写 java 的)但感觉好像写啥都是一把梭,很快都能写完了。。。

    难道这就是「大道至简」,我悟了。。。

    (纯调侃)

    65 条回复    2022-05-19 10:50:25 +08:00
    Maboroshii
        1
    Maboroshii  
       2022-05-09 02:36:18 +08:00 via Android   ❤️ 3
    我第一份工作就是用 go 写 web 服务,之前也没系统的学习过别的语言写法,反正觉得挺舒服。
    但是遇到几个 Java 转 go 的同事写出来确实很啰嗦。。没错,,开战吧!
    i3x
        2
    i3x  
       2022-05-09 04:17:16 +08:00 via Android
    萌新不懂就问。web 不是 php 的活么?
    不是很懂 ruby go python 的 web 后端代码是如何维持一个庞大的体量后还能维持更新的。
    java 都感觉比较麻烦了。
    虽然我也用过 django 之类的。但是感觉没什么先进性?
    drackzy
        3
    drackzy  
       2022-05-09 04:41:36 +08:00
    写的痛快舒服不一定钱多,比如 Python web 。
    asuraa
        4
    asuraa  
       2022-05-09 04:48:12 +08:00 via iPhone   ❤️ 1
    工作中同时用 spring boot 和 asp.net core 前一个库多 写起来啰嗦,后一个库没前面多,写起来舒服 。每次自己想用 go 做点东西,ide 啥的弄好开始写,非常痛苦跟难受,然后不了了之。。。
    chendy
        5
    chendy  
       2022-05-09 08:05:38 +08:00
    前几天接了个 php 的小活,啥都没有$一把梭是真的快乐啊
    nine
        6
    nine  
       2022-05-09 08:21:00 +08:00   ❤️ 1
    啥?写 Java 都成幸福的事了?
    用 Ruby 你不是爽到飞上天。
    herozzm
        7
    herozzm  
       2022-05-09 08:29:10 +08:00 via Android
    是的写 api 舒服,但如果要写 web 比如 html 模板啥的,痛苦的一 p ,最后还是换成 php
    wzw
        8
    wzw  
       2022-05-09 08:32:27 +08:00
    @drackzy #3 Python 重构的时候, ...
    fiypig
        9
    fiypig  
       2022-05-09 08:45:27 +08:00
    需要什么 ,就造什么 ,多好啊, 有时候越复杂不一定好
    echo1937
        10
    echo1937  
       2022-05-09 08:46:12 +08:00
    别和我说大道至简,真的过敏。

    老 Django 项目,FBV 写法,几乎不用什么第三方生态库,

    甚至操作数据库都不用 Django ORM ,够大道至简了吧?

    然后一堆类似功能复制来复制去的,就算是 Flask 也不会写成这样啊。
    darkengine
        11
    darkengine  
       2022-05-09 08:47:51 +08:00
    @echo1937 那是人的问题
    echo1937
        12
    echo1937  
       2022-05-09 08:51:35 +08:00   ❤️ 1
    @darkengine #11 换个大神来,把通用功能抽取出来,层次分清,代码通用,不又是一个新轮子(框架)吗,功能越强大,免不了就越重。
    yl20181003
        13
    yl20181003  
       2022-05-09 08:52:02 +08:00 via Android
    月经贴
    RickyC
        14
    RickyC  
       2022-05-09 08:54:57 +08:00
    不太懂 go; go 能用来开发 web?
    web 不是前端吗? 前端不是 JS, vue, react 这些吗?
    后端不是写接口的吗?
    cityboy
        15
    cityboy  
       2022-05-09 08:55:47 +08:00
    我是从 java 转 go 的,我感觉写 web 应用 go 和 java 都差不多。主要再写业务架构上面有很大的区别,我们团队的搭建架构都是模仿 java 写的,导致上层基于这个架构写的人很难受。

    例如用 go 写 ddd 的架构代码,不复杂的项目还行。复杂的项目,你会发现真的要写死人。
    darkengine
        16
    darkengine  
       2022-05-09 09:02:08 +08:00
    @echo1937 我以为“层次分清,代码通用 ”是一个好项目的基本标准呢
    rxswift
        17
    rxswift  
       2022-05-09 09:06:38 +08:00
    @RickyC web 前端,web 后端,你说的前端就是 web 前端,写接口的后端就是 web 后端
    echo1937
        18
    echo1937  
       2022-05-09 09:15:25 +08:00
    @darkengine #16 我的意思是,简不简是由需求复杂度决定的,靠换个语言起不了大作用。但是把项目搞繁芜却很容易,选个足够复杂的框架轮子就行。所以总结下来,这和人有关系,和语言没啥关系。
    yzbythesea
        19
    yzbythesea  
       2022-05-09 09:19:21 +08:00
    我是 java 转 go ,这两年效率翻倍(感觉吐嘈 go 的基本都是玩梗,什么 err != nil 这种
    darkengine
        20
    darkengine  
       2022-05-09 09:19:54 +08:00
    @echo1937 嗯,我的意思也是,语言再 NB 用的人没用好也白搭
    acehowxx
        21
    acehowxx  
       2022-05-09 09:22:54 +08:00 via Android   ❤️ 1
    go 写 web 的服务是挺好的,适合前后端分离的项目,路由跳转也别管,就接个参数返回个 json 省心的很。配合 copilot 写写注释按按 tab ,编程体验还是很愉快的。
    x1aoYao
        22
    x1aoYao  
       2022-05-09 09:49:12 +08:00
    我似乎也有过这样的感受,不过现在又开始嫌弃了。
    我也是 Java 转 Go ,快 4 年了,准备转 Rust 了
    mknightoy
        23
    mknightoy  
       2022-05-09 09:56:47 +08:00   ❤️ 3
    java 整体配合好却不尽兴,可在善解人意这方面没得说
    net 与 java 相反挺尽兴的,不过有时候太过于主动很累
    js 类似 java 但时间一久就腻了,只能凑合着过
    ruby 属于平平淡淡类型
    go 它的一切你都可以掌控,就是太过青涩
    rust 太超前了,大多人坚持不住
    python 非常恐怖,所有人通杀,时间久了就出不来了
    c++永远的存在,没有一个人能掌握它之心
    与 php 美好的时光,是甜蜜的糖
    unnamedhao
        24
    unnamedhao  
       2022-05-09 09:59:14 +08:00
    我想咨询一下,有什么东西是 java 不需要手写,golang 需要手写的?
    tianyou666shen
        25
    tianyou666shen  
       2022-05-09 10:02:28 +08:00
    也许这就是为了优化工程复杂度而诞生的语言吧 //狗头
    统一的 fmt 带来一种奇妙的体验,看别人的库就像逛自己家一样,里面在干嘛都很直白.
    Latin
        26
    Latin  
       2022-05-09 10:03:11 +08:00
    @unnamedhao 指的是第三方依赖很多 不用自己造轮子
    wanguorui123
        27
    wanguorui123  
       2022-05-09 10:07:41 +08:00
    新东西肯定要造轮子
    fkdog
        28
    fkdog  
       2022-05-09 10:25:29 +08:00
    java 的三层架构太深入人心了,以至于写 java 的在切到其他语言以后免不了总是会有意无意的弄出这种分层模型。
    nulIptr
        29
    nulIptr  
       2022-05-09 11:09:50 +08:00   ❤️ 2
    go 里面 map/reduce/filter 都得写 for 循环让我不能接受。。。
    ojh
        30
    ojh  
       2022-05-09 11:34:34 +08:00
    @fkdog 这个时候就可以去想为什么存在三层架构,有什么作用,什么时候才用到。部分的人不去深究而是照搬去做或者吐槽 Java 垃圾
    Immortal
        31
    Immortal  
       2022-05-09 11:42:57 +08:00   ❤️ 1
    别说写的爽不爽
    光 go 的:
    1. 开发环境配置
    2. 编译速度
    3. 启动速度
    就让我爽的嗷嗷叫的,以前配置 php\java\python 的环境,安装依赖那些真的烦
    EscYezi
        32
    EscYezi  
       2022-05-09 12:41:38 +08:00 via iPhone
    @nulIptr #29 想回复点错成感谢了……1.18 后可以用 https://github.com/samber/lo
    superfatboy
        33
    superfatboy  
       2022-05-09 13:55:17 +08:00
    我作为一个初学者感觉两个不舒服的地方:
    1. if err != nill return err
    2. 找数组下标(没有范型的时候,很烦)
    javaisthebest
        34
    javaisthebest  
       2022-05-09 14:28:20 +08:00
    @Immortal java 需要安装什么配置?

    idea 自带 jdk 下载

    自己无非就得配置一个 maven 而已

    如果是 mac 的话 brew install maven + 复制别人一个 settings.xml 的事

    我是不知道 Java 有啥麻烦的
    Morii
        35
    Morii  
    OP
       2022-05-09 15:06:04 +08:00
    @Immortal #31 go 的包管理我觉得不如 maven 好用
    Immortal
        36
    Immortal  
       2022-05-09 15:19:58 +08:00
    @Morii #35
    确实 只是够用
    Immortal
        37
    Immortal  
       2022-05-09 15:21:11 +08:00
    @javaisthebest #34
    java 我更多的吐槽是:
    1. 启动速度
    2. 资源占用
    3. 下个 java8 还要注册(我知道可以去其他镜像下,只是不满 oracle 的态度)
    kalista
        38
    kalista  
       2022-05-09 16:31:08 +08:00   ❤️ 3
    我非常喜欢一个二进制就可以运行的感觉
    B1acKy1in
        39
    B1acKy1in  
       2022-05-09 19:21:03 +08:00
    所以 rust 在这里就没有生存空间吗?
    Rwing
        40
    Rwing  
       2022-05-09 21:04:20 +08:00
    用 go 写 web 的都是背离了 go 的设计初衷的,自找麻烦
    Leviathann
        41
    Leviathann  
       2022-05-09 21:05:36 +08:00
    有没有 show case 可以对比一下?
    hsuyeung
        42
    hsuyeung  
       2022-05-09 23:07:26 +08:00
    Spring Boot Boy ,接触 Go 的第一天就爱上了!
    vchroc
        43
    vchroc  
       2022-05-10 00:01:13 +08:00 via iPhone
    连个像样的枚举都没有,真的是语法糖太少,味道特苦
    roundgis
        44
    roundgis  
       2022-05-10 00:34:43 +08:00
    @B1acKy1in rust 写 web 有什么特别的优势?
    dzdh
        45
    dzdh  
       2022-05-10 00:50:20 +08:00
    感觉 go/rust 更能考验一个 coder 的代码组织能力和思考能力

    一个不小心就一大坨冗余代码。再一看标准库的各种封装。io 、net 等接口的配合就想说鹅妹嘤。
    foursevenlove
        46
    foursevenlove  
       2022-05-10 09:12:30 +08:00
    做 java 开发的现在转向 go ,感觉除了少了一些轮子但其他还是很爽的。
    chengxiao
        47
    chengxiao  
       2022-05-10 09:45:39 +08:00
    写其他语言的时候,有一种心理负担就是”这个方法用的对不对?这个方法性能怎么样“,但是到 Golang 这里就没这么多逼事,循环一把梭
    Johnming
        48
    Johnming  
       2022-05-10 10:58:42 +08:00
    go 语言还挺好的,有点麻烦
    ZeroDu
        49
    ZeroDu  
       2022-05-10 11:30:48 +08:00
    go 很多都要造轮子吧,可能是我的错觉
    ikdata4
        50
    ikdata4  
       2022-05-10 15:47:23 +08:00
    说的是接口吧,写网页还得是术业有专攻,一个语言可能什么都能干,但在一些方面可能就比不过其他语言了
    Joker123456789
        51
    Joker123456789  
       2022-05-10 18:17:07 +08:00
    @Immortal 啥? 装 jdk 比装 go 编译器 慢很多很多? 你别骗我,我读书少。

    编译速度? 启动速度? 那不是 spring 太大了导致的吗? 要不要换个 框架? 这个锅 java 不背。
    Joker123456789
        52
    Joker123456789  
       2022-05-10 18:18:13 +08:00
    @kalista 相信我,一个 jar 就可以运行的感觉 是一模一样的。 jdk 是一次性安装,不麻烦的。 而且 linux 基本上自带 openjdk 。
    Joker123456789
        53
    Joker123456789  
       2022-05-10 18:19:17 +08:00
    @chengxiao 这只能说,go 的规范少,你写 java 不管规范 也是一把梭。 语言的锅 , 规范的锅,框架的锅,你好像一点都分不清楚啊。
    zhaoyihuaer
        54
    zhaoyihuaer  
       2022-05-10 18:21:50 +08:00
    @Immortal 雀实 环境是真的方便
    Immortal
        55
    Immortal  
       2022-05-10 19:10:02 +08:00
    @Joker123456789 #51
    - " 装 jdk 比装 go 编译器"
    - 这个我没有理解

    - "那不是 spring 太大了导致的吗? 要不要换个 框架? 这个锅 java 不背"
    - 确实是框架,但是现在我们所说的 java 多少能摆脱 spring,主流市场说 java 等于 spring 有点太过分,说个约等于我觉得也没很离谱
    mmdsun
        56
    mmdsun  
       2022-05-10 19:13:33 +08:00 via iPhone
    我们以前花大力气把一项目从 Java 迁移 go ,结果代码多了,时间成本多了,性能只比老项目阻塞 Servlet 那种快。和新项目 spring webflux,vert.X ,netty 那种的反应式项目比相差无几,有时 go 还不如。 个人观点:go 比较适合大厂造轮子,写底层中间件,不适合写业务。唯一 go 优点是云原生这块领先 Java 。 但要是云原生过渡,我估计会选 asp net core,java 程序员好上手。
    ojh
        57
    ojh  
       2022-05-10 19:15:01 +08:00
    @Immortal 请教一下 Golang 中大型 Web 应用的资源占用如何,比个 "Hello ,world" 就没意义了。
    SorcererXW
        58
    SorcererXW  
       2022-05-10 23:27:07 +08:00
    @Joker123456789 比生态就要绑定 Spring ,比轻量又甩锅给框架,这不是双标吗
    Immortal
        59
    Immortal  
       2022-05-11 10:02:41 +08:00
    @ojh #57
    因为没有完全相同功能的项目来对比两者
    你可以参考下国内知乎从 python => go 重构后的结果,随手搜的文章
    https://www.infoq.cn/article/gjmlvcxl*r3jmj26jhbf
    本来想找下以前 uber 的一个相关 blog,一时没找到.uber 也是个重度使用 golang 的公司,而且技术输出做的不错,可以关注下

    综合来说 golang 写业务并没有什么优势,中规中矩.
    网络数据 /协议处理,基建应用上才是发挥最大能力的地方.
    RickyC
        60
    RickyC  
       2022-05-11 12:27:08 +08:00
    @rxswift 居然有"web 后端"的说法? 后端不是写接口吗? 写接口还分什么 web/移动端?
    rxswift
        61
    rxswift  
       2022-05-11 14:38:26 +08:00
    @RickyC 以前前后端不分离
    LDa
        62
    LDa  
       2022-05-11 17:47:41 +08:00
    不懂就问 Go 写业务代码的爽点在哪里?
    YUyu101
        63
    YUyu101  
       2022-05-11 18:47:10 +08:00
    go 能一把梭说明业务不复杂,业务不复杂我连后端都不想写,什么 spring rest crud 还要写实体我都嫌麻烦,直接 graphql 、postgrest 套上完事,前端爽的飞起,数据库就是实体。
    B1acKy1in
        64
    B1acKy1in  
       2022-05-11 19:14:04 +08:00
    @roundgis 个人没有用 rust 去做过 web 开发,没有这方面的感受,不过用来写一些计算功能是真的爽。原同事之前安利过 rust 的 wasm ,还没有尝试
    349865361
        65
    349865361  
       2022-05-19 10:50:25 +08:00
    php 转 go 1 天入门 2 天开写 1 个月成功搞定一个项目 目前开发效率和 php 一样 感觉啥语言都大同小异 有方便的地方也有麻烦的地方 平均下来差不多 终于不用再担心 php 的协程扩展难用的问题了 性能高一大截
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   898 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 21:36 · PVG 05:36 · LAX 14:36 · JFK 17:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.