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

go 语言提高 web 生产力

  •  
  •   zwnozhuce 2021-11-26 14:58:30 +08:00 9800 次点击
    这是一个创建于 1421 天前的主题,其中的信息可能已经有所发展或是发生改变。
    试了下 go 语言

    - 开发代码简洁
    - 编译部署简单
    - 心智负担较轻

    慢慢写一写工具,深入下
    第 1 条附言    2021-11-29 10:12:45 +08:00

    Rob Pike谈Google Go

    Go是系统级语言还是应用级语言?

    我们是把他设计为一种系统级语言,因为我们在Google所做的工作是系统级的,对吧?Web服务器和数据库系统、以及存储系统等,这些都是系统。但不是操作系统,我不知道Go是否能成为一个好的操作系统语言,但是也不能说它不会成为这样的语言。有趣的是由于我们设计语言时所采用的方法,Go最终成为了一个非常好的通用语言,这有点出乎我们意料。我想大多数用户并没有实际从系统观点来考虑过它,尽管很多人做过一点Web服务器或类似东西。

    Go用来做很多应用类的东西也非常不错,它将会有更好的函数库,越来越多的工具以及一些Go更有用的东西,Go是一个非常好的通用语言,它是我用过的最高产的语言。

    72 条回复    2021-12-02 17:31:20 +08:00
    Bazingal
        1
    Bazingal  
       2021-11-26 15:08:44 +08:00   48
    跟 java 比代码简洁,跟 rust 比编译速度,跟 c++比心智负担
    sagaxu
        2
    sagaxu  
       2021-11-26 15:11:22 +08:00 via Android   3
    if err 和 json 加字段别名,可比 Java 嗦多了
    whwlsfb
        3
    whwlsfb  
       2021-11-26 15:11:59 +08:00 via Android
    @Bazingal 哈哈哈,哥们一语道破
    wdwwtzy
        4
    wdwwtzy  
       2021-11-26 15:12:42 +08:00   5
    别闹,go 真的不能提高生产力,尤其是业务系统的生产力
    hidemyself
        5
    hidemyself  
       2021-11-26 15:15:12 +08:00
    go 能提高 web 生产了
    VANHOR
        6
    VANHOR  
       2021-11-26 15:16:26 +08:00   img src="http://www.v2ex.com/static/img/heart_20250818.png?v=c3415183a0b3e9ab1576251be69d7d6d" width="14" align="absmiddle" alt="" /> 3
    公司之前是 PHP ,现在切到 Go 了,写业务代码,真不觉得 Go 有什么生产力。
    Numbcoder
        7
    Numbcoder  
       2021-11-26 15:18:30 +08:00   2
    go 写一些网络组件工具挺好,用来写 web/业务系统怕不是脑子进水了吧,还生产力。。
    ikas
        8
    ikas  
       2021-11-26 15:19:04 +08:00   2
    b 格有了,kpi 长了,领导升了,项目烂了
    ob
        9
    ob  
       2021-11-26 15:22:52 +08:00
    借楼求个开源目录结构合理的 web 项目,参考下别人的优秀代码,现在的代码,都让我怀疑 go 到底哪里高效好用了。
    felixcode
        10
    felixcode  
       2021-11-26 15:27:18 +08:00 via Android
    年纪轻轻不去论资排辈,动不动还生产力,你把 Java 往哪放?退休前还有这么多年怎么办?
    macscsbf
        11
    macscsbf  
       2021-11-26 15:27:36 +08:00
    尬吹?
    v2orz
        12
    v2orz  
       2021-11-26 15:27:52 +08:00
    跟楼上一样
    DeWjjj
        13
    DeWjjj  
       2021-11-26 15:28:11 +08:00   3
    @ob go 的高效在于写微服务的时候一键打包,多服务器部署简易。
    Ayanokouji
        14
    Ayanokouji  
       2021-11-26 15:29:06 +08:00
    为啥没人提 kotlin (服务端)
    aababc
        15
    aababc  
       2021-11-26 15:29:27 +08:00
    @Bazingal 看破不说破
    rm0gang0rf
        16
    rm0gang0rf  
       2021-11-26 15:31:31 +08:00
    跟 php 比啥?
    tt67wq
        17
    tt67wq  
       2021-11-26 15:35:26 +08:00
    开发代码简洁?????
    conkke
        18
    conkke  
       2021-11-26 15:37:01 +08:00
    不如 php 一根毛(狗头)
    INCerry
        19
    INCerry  
       2021-11-26 15:40:53 +08:00   9
    C# 路过~
    Leviathann
        20
    Leviathann  
       2021-11-26 15:41:58 +08:00
    @Ayanokouji
    我们在用,总体而言比较舒适,
    但和 spring 结合还是稍微有一点小坑,比如 springboot 必须要 2.4+才支持 dataclass 的 rowmapper ,在需要用到的地方需要手写一下从 resultSet 构造 dataclass 的 lambda
    然后 spring data jpa 的 entity 所有字段都要为 var ,因为底层也是用空构造器构造然后一个一个 set
    zhujq
        21
    zhujq  
       2021-11-26 15:46:39 +08:00
    web 生产力?我大 spring 不同意
    xz410236056
        22
    xz410236056  
       2021-11-26 15:47:44 +08:00
    @sagaxu #2 这不都 IDE 自动生成的吗。。。
    Ayanokouji
        23
    Ayanokouji  
       2021-11-26 16:13:44 +08:00
    @Leviathann Ktorm 了解一下?
    Leviathann
        24
    Leviathann  
       2021-11-26 16:17:07 +08:00 via iPhone
    @Ayanokouji 了解过 但是技术选型不是我做主。。
    123jiayue
        25
    123jiayue  
       2021-11-26 16:18:09 +08:00 via iPhone
    喂你们最近是要黑 go 吗 怎么这么多这种
    Ayanokouji
        26
    Ayanokouji  
       2021-11-26 16:19:19 +08:00
    @Leviathann 哈哈,我感觉 jpa 很不舒服
    xsen
        27
    xsen  
       2021-11-26 16:36:29 +08:00   4
    @Numbcoder 我倒觉得动不动说人脑子进水的人脑子进水了

    我就是不明白,所谓的业务代码是都是指什么?不就是 curd 、还有业务逻辑么?难不成还有那些高深的业务代码
    xsen
        28
    xsen  
       2021-11-26 16:41:13 +08:00   2
    不过只能说 go 或者真的戳到某些人的痛点
    像我们这边的,毕业 1-2 年的原先做 c++/java 或前端的同事,拿本书 1-2 周过一下,就可以用 go 写业务代码

    我是真的很想知道,楼上诸位说的业务代码,都是些什么业务代码?
    不就是数据库表 model crud 、api 设计实现;业务处理逻辑;第三方统对接?

    难不成还有别的什么不成
    lyhapple
        29
    lyhapple  
       2021-11-26 16:47:02 +08:00
    就算是用 go 写 CRUD, 我也觉得比用 java 写的爽.适合自己的,就是最好的 :)
    cmdOptionKana
        30
    cmdOptionKana  
       2021-11-26 16:53:51 +08:00   2
    我非常喜欢 Go ,但我只用来写小项目。

    小项目,Go 的优势比较明显,但是大项目就没办法吹得太狠了,实事求是才能避免无谓的争论。

    比如代码简洁:小项目 Go 可以几个 struct 加几个函数直接开干,不用像 Java 那样考虑层层抽象。但项目大了还是需要层层抽象,需求经过几轮疯狂添加之后代码也很难说有多简洁了。

    又比如编译部署,小项目直接扔一个二进制可执行文件出去就行,当然方便。但是大项目的基础设施都搭建好了,一切都自动化滚动更新,此时 Go 的优势又不明显了。
    matrix1010
        31
    matrix1010  
       2021-11-26 17:00:34 +08:00   2
    Go 写个能用的东西很快。甚至得益于 goroutine 的强大性能,写个能支持高并发的东西也挺快。但是要想写一个对开发者友好,具有一定通用性,方便扩展,易于维护的东西,就需要比较高的设计能力与品味了,而且很多时候必须要依赖代码生成,又进一步提高了门槛。另外个人感觉 Go 写测试的难度也比其他语言大些,国内用 Go 的公司写单元测试的比例估计很低
    nicebird
        32
    nicebird  
       2021-11-26 17:28:40 +08:00
    @Bazingal 感觉没问题啊,优点很多
    zhady009
        33
    zhady009  
       2021-11-26 17:33:59 +08:00
    用 go 写 erp (狗头
    lbp0200
        34
    lbp0200  
       2021-11-26 17:46:54 +08:00   2
    在线人数小于 100 ,建议 PHP
    在线人数小于 1000 ,建议 Java
    最后考虑 go ,避免以下尴尬,一顿操作猛如虎,在线人数二十五
    mason961125
        35
    mason961125  
       2021-11-26 17:48:42 +08:00
    @matrix1010
    > 另外个人感觉 Go 写测试的难度也比其他语言大些

    求解释
    balabalaguguji
        36
    balabalaguguji  
       2021-11-26 17:50:33 +08:00   1
    你看下 go 跟 mongodb 的交互代码说不定就要放弃了,我就是
    matrix1010
        37
    matrix1010  
       2021-11-26 18:14:23 +08:00
    @mason961125 从我的角度来看对比 Python/Ruby 肯定难写很多,很多时候非常难 mock 。举个例子 goroutine, 别人的代码里有一部分逻辑是 goroutine 完成的,而你的测试在 goroutine 没完成之前就结束了,线上这个东西没问题,但你的测试结果就是不对。而且测试轮子不多,比如类似 factoryboy/factorybot 的轮子就没看到让我满意的。
    F281M6Dh8DXpD1g2
        38
    F281M6Dh8DXpD1g2  
       2021-11-26 18:16:29 +08:00   1
    - 心智负担较轻
    这是认真的么.....范型和异常都没有这负担还不重?
    wanguorui123
        39
    wanguorui123  
       2021-11-26 18:28:19 +08:00 via iPhone   1
    CSharp 写 Web 最爽
    joesonw
        40
    joesonw  
       2021-11-26 18:38:51 +08:00
    @sagaxu json 字段别名, java 不也是得加吗? 不加 json tag 也是可以的, 默认都是 camelCase
    jin7
        41
    jin7  
       2021-11-26 18:47:27 +08:00
    go 语言有啥好的 库肯定没 java 丰富
    beneo
        42
    beneo  
       2021-11-26 18:51:31 +08:00   1
    库都是 github 的,我第一感觉就是会不会不稳定
    jaywhen
        43
    jaywhen  
       2021-11-26 18:54:30 +08:00
    第 n 届 v 站不定周期性语言大战开始!
    cmdOptionKana
        44
    cmdOptionKana  
       2021-11-26 19:00:54 +08:00
    @liprais 你可能不知道心智负担的意思,没有泛型和异常只能说体力上更累,但心智负担确实是减轻了。

    大多数情况下,越是抽象,心智负担越高,越是 verbose 则心智负担越低。
    iamv2er
        45
    iamv2er  
       2021-11-26 19:06:36 +08:00 via iPhone
    日常 因为语言吵闹 好无聊 真的
    huigeer
        46
    huigeer  
       2021-11-26 20:10:16 +08:00
    目前入坑,感觉实现一个 web api 框架好 easy 。看起来好透明,。真到实际业务的各种封装,还没体会到。
    sagaxu
        47
    sagaxu  
       2021-11-26 20:20:23 +08:00 via Android
    @joesonw go 的导出成员首字母要大写,跟大多数公司的 API 规范不一样,只能挨个字段备注别名。Java 没有首字母大写的习惯,且可以在 class 级别或者 json 库全局级别设置不同的命名规则,大部分情况下不需要挨个字段指定。
    akyle
        48
    akyle  
       2021-11-26 20:54:52 +08:00
    没必要,要开发效率就选 Java ,而且还可以本地化。
    cutchop
        49
    cutchop  
       2021-11-26 20:55:29 +08:00
    node 天下无敌
    wonderfulcxm
        50
    wonderfulcxm  
       2021-11-26 21:02:51 +08:00 via iPhone
    试过一段时间,简陋的语言,要啥没啥,写起来好累。
    ClericPy
        51
    ClericPy  
       2021-11-26 21:14:16 +08:00
    all-in golang 的国内公司也不少了, 他们选择的理由够直白的了, 比如说
    solos
        52
    solos  
       2021-11-26 22:30:03 +08:00
    go 堪称完美
    yxx1993
        53
    yxx1993  
       2021-11-26 23:10:22 +08:00
    go 在 web 方面比 php 性能好,但是在 web 方面还是没有 laravel 这种专业 web 框架有生产力。个人见解
    windseekerjack
        54
    windseekerjack  
       2021-11-27 02:46:16 +08:00
    @zhady009 之前公司还真写过,并没有什么问题,不是很懂有什么方面的业务对特定编程语言有难度
    Austin2035
        55
    Austin2035  
       2021-11-27 10:20:10 +08:00
    @lbp0200 网站可以没有那么多访问人数,但一定要有百万级并发的架构。/doge
    heytap
        56
    heytap  
       2021-11-27 10:23:51 +08:00
    用 go 写业务代码真滴痛苦
    mmdsun
        57
    mmdsun  
       2021-11-27 11:14:15 +08:00 via Android   1
    go 写复杂的业务逻辑不如 Java ,生态差,也就是云原生和运维的优势。很多框架都是造 Java 重复的轮子

    那这样的话还不如用 C sharp 写,有 Java 优写业务点,云原生支持好。全球范围看 asp.net core 的 web 框架比 sping 都多。
    micean
        58
    micean  
       2021-11-27 11:42:47 +08:00
    为什么一定要用 oo 思想写 java 然后怪 java 太繁琐???
    ericgui
        59
    ericgui  
       2021-11-27 12:44:30 +08:00
    @wanguorui123 据说是的
    seakingii
        60
    seakingii  
       2021-11-27 13:29:43 +08:00   1
    别炒了,做业务用 C#,JAVA 最合适
    hutoer
        61
    hutoer  
       2021-11-27 14:20:10 +08:00   1
    - 开发代码简洁?其实远不如动态语言
    - 编译部署简单?编译不挂代理试试,死的心都有。现在大多是 docker 了吧,一个命令的事情
    - 心智负担较轻?不一定
    KevinBlandy
        62
    KevinBlandy  
       2021-11-27 17:39:17 +08:00
    errlang 。
    undefine2020
        63
    undefine2020  
       2021-11-27 20:17:00 +08:00
    事实上大部分 web 业务都不是大流量高并发的,上 php 足以。
    JasonFlink
        64
    JasonFlink  
       2021-11-28 00:30:56 +08:00 via iPhone
    感觉它就是为了更快出货而存在
    xiaotianhu     65
    xiaotianhu  
       2021-11-28 15:57:14 +08:00
    这贴我渐渐品出当年 PHP 的味道了啊

    以后就是 "Go 是最好的语言",然后两边互喷了吧?
    fengjianxinghun
        66
    fengjianxinghun  
       2021-11-28 19:33:43 +08:00
    @hutoer docker 也得挂代理,装个什么包先要改源。。。麻烦程度一点不少。
    yin1999
        67
    yin1999  
       2021-11-29 07:08:44 +08:00 via Android
    @beneo 如果有人已通过 goproxy 拉取了某一版本的 package ,除非作者向 goproxy 提出删除 package 的要求,否则这个版本的 package 会一直被缓存在 goproxy 中(即使作者删除 GitHub 仓库),也就是说:这个版本的 package 会一直可用。
    kkstart
        68
    kkstart  
       2021-11-29 10:11:39 +08:00
    我可能有点怀疑您有没有写过业务
    go 在 web 业务上根本谈不上生产力,甚至说是拖后腿的那个
    NBY
        69
    NBY  
       2021-11-29 14:40:40 +08:00
    说得好!我用 python
    CasualYours
        70
    CasualYours  
       2021-11-29 16:53:31 +08:00
    所以讨论了半天,还是最熟悉的才是最有生产力的
    panlatent
        71
    panlatent  
       2021-11-30 16:38:13 +08:00   1
    个人愚见,go 会让简单的东西便得更简单,复杂的东西变得更复杂。
    Joker123456789
        72
    Joker123456789  
       2021-12-02 17:31:20 +08:00   1
    你说这种生产力,java 有啊,很多年前就有了。 那会儿叫 servlet 。

    go 更适合跟 C 作比较,跟 java 比 web 还是差点意思

    这几天遇到很多槽点:

    1. 反射 必须事先指定类型,无法做到像 java 那样 仅凭一个字符串就能把方法给调用了
    2. json 无法转化成 map ,因为 interface{} 无法像 java 的 Object 那样 拆箱成任意类型
    3. 没有动态代理,没有泛型

    这些问题 衍生出了一个更大的问题,就是开发一些 通用的 工具包,框架 会非常难。 必须退而求其次

    这是个很严重的问题,会直接导致三方生态的薄弱
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1333 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 39ms UTC 17:14 PVG 01:14 LAX 10:14 JFK 13:14
    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