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

go 语言提高 web 生产力

  •  
  •   zwnozhuce · 56 天前 · 7485 次点击
    这是一个创建于 56 天前的主题,其中的信息可能已经有所发展或是发生改变。
    试了下 go 语言

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

    慢慢写一写工具,深入下
    第 1 条附言  ·  53 天前

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

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

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

    难不成还有别的什么不成
    lyhapple
        29
    lyhapple  
       56 天前
    就算是用 go 写 CRUD, 我也觉得比用 java 写的爽.适合自己的,就是最好的 :)
    cmdOptionKana
        30
    cmdOptionKana  
       56 天前   ❤️ 2
    我非常喜欢 Go ,但我只用来写小项目。

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

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

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

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

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

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

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

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

    这几天遇到很多槽点:

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

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

    这是个很严重的问题,会直接导致三方生态的薄弱
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2452 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 13:32 · PVG 21:32 · LAX 05:32 · JFK 08:32
    ♥ Do have faith in what you're doing.