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 · 9365 次点击
    这是一个创建于 1097 天前的主题,其中的信息可能已经有所发展或是发生改变。
    试了下 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   ❤️ 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 的轮子就没看到让我满意的。
    liprais
        38
    liprais  
       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 会一直可用。
    jjshare123
        68
    jjshare123  
       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   ·   实用小工具   ·   1240 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 18:05 · PVG 02:05 · LAX 10:05 · JFK 13:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.