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

用 Go 写 Web 后端合适吗?

  •  
  •   gowk ·
    qinjinling · 14 天前 · 8369 次点击
    102 条回复    2022-08-12 10:03:44 +08:00
    1  2  
    bugfan
        1
    bugfan  
       14 天前
    太 tm 合适了😊
    keepeye
        2
    keepeye  
       14 天前
    挺合适的啊,我都写了好几年了
    dayeye2006199
        3
    dayeye2006199  
       14 天前 via Android
    啥需求?写的人啥水平?之前用什么比较多?
    你这三无问题啊
    fiypig
        4
    fiypig  
       14 天前
    gin + gorm 就够了
    ikaros
        5
    ikaros  
       14 天前
    不合适, 建议 rust java
    liaohongxing
        6
    liaohongxing  
       14 天前
    高性能,高并发,你值得拥有
    timpaik
        7
    timpaik  
       14 天前 via Android
    go 生来就是干这个的
    Bazingal
        8
    Bazingal  
       14 天前
    Kiriri
        9
    Kiriri  
       14 天前   ❤️ 3
    业务复杂不适合, 业务简单还可以
    hex2en
        10
    hex2en  
       14 天前   ❤️ 4
    业务性很重的不合适
    gowk
        11
    gowk  
    OP
       14 天前
    @Kiriri
    @hex2en
    能不能分享一下啥叫复杂业务
    Go 处理复杂业务具体有哪些弊端
    gowk
        12
    gowk  
    OP
       14 天前
    @keepeye #2
    能不能分享一下,写的什么系统
    用的什么框架,项目如何分层、包的组织方式
    Saxton
        13
    Saxton  
       14 天前
    @gowk 業務複雜的,還是推薦 JAVA ,JAVA 天生適合做大項目
    rimutuyuan
        14
    rimutuyuan  
       14 天前
    b 站后端是 go ,如果你认为 b 站还不够复杂的话,那么 go 不适合 web 后端
    wakaka
        15
    wakaka  
       14 天前
    比较蛋疼,不如 js 。v8 的优化比 golang 好多了
    cheng6563
        16
    cheng6563  
       14 天前
    良好吧,相比 python ,js 之类来说工程性会更好。但相对 java ,c#之类的缺少一些运行时特性要写更多重复代码。
    blless
        17
    blless  
       14 天前
    合适啊,越复杂越合适呢,毕竟 Go 没啥特殊的语法,也就协程比较麻烦一点。再复杂的东西,你用 Go 写也就那样,大部分人都能看懂,软件后续维护其实真的很重要。毕竟人都是流动的。
    wdwwtzy
        18
    wdwwtzy  
       14 天前
    真不合适,各位不在推荐 go 来写 web 了,纯属添堵
    wzw
        19
    wzw  
       14 天前
    Saxton
        20
    Saxton  
       14 天前
    @rimutuyuan 說是在,B 站的业务不算很复杂
    keepeye
        21
    keepeye  
       14 天前
    @gowk 你参考下 goframe 的项目组织方式或者直接用它吧
    xiaoriri666
        22
    xiaoriri666  
       14 天前
    建议还是 PHP
    lysS
        23
    lysS  
       14 天前   ❤️ 1
    5 楼,突然蹦出个 rust 。。。一下子没绷住
    proxychains
        24
    proxychains  
       14 天前   ❤️ 2
    @xiaoriri666 走出半生,归来仍是 PHP
    james2013
        25
    james2013  
       14 天前   ❤️ 3
    go 挺合适的
    java 都开发完了,go 还在造轮子
    zhuweiyou
        26
    zhuweiyou  
       14 天前
    你是自己玩还是公司项目? 公司的你问这个问题说明你没决定权,洗洗睡吧. 要是自己玩的随便什么都行.
    cmdOptionKana
        27
    cmdOptionKana  
       14 天前
    自己玩很合适,主要是放在 VPS 里占用资源比较少。
    ak918xp
        28
    ak918xp  
       14 天前
    Java 天下第一
    nightsky
        29
    nightsky  
       14 天前 via iPhone   ❤️ 1
    要不要试试 c#?
    kerrspace
        30
    kerrspace  
       14 天前
    @lysS Rust 去招聘网站上搜一搜岗位很容易为零 我自学 Rust 都是为了增进 C++理解的 这语言还是慢慢来吧
    zhch602
        31
    zhch602  
       14 天前   ❤️ 1
    @rimutuyuan B 站业务也算复杂?
    tairan2006
        32
    tairan2006  
       14 天前 via Android
    搞 b 端的不推荐,c 端的还行,有泛型之后也没那么麻烦了
    qfdk
        33
    qfdk  
       14 天前 via iPhone
    @james2013 js 表示不服 res.json({msg:"完活"})
    ShuA1
        34
    ShuA1  
       14 天前
    业务复杂的就算了,不然需要自己写很多轮子
    不像 java 下 Spring 一统天下
    iseki
        35
    iseki  
       14 天前 via Android
    用 Kotlin 吧,可以摆脱冗长的 Java 和繁琐的 Go
    iseki
        36
    iseki  
       14 天前 via Android
    @tairan2006 Go 的类型推导太弱了,泛型还是差点意思
    lixintcwdsg
        37
    lixintcwdsg  
       14 天前
    你要是就写写业务,java 最方便。
    因为写业务涉及到的方方面面,比如权限配置管理啊之类的乱七八糟的,java 这边基本都有标准实现,并且稳定多年运行功能都够用。
    go 就是很多方面要么没有,要么没有标准实现,你说能写吧都能写,但是要自己耗费精力
    相似的就是 goframe ,但是这也是山寨版的 spring boot 细节上差很多东西
    PamelaKevein
        38
    PamelaKevein  
       14 天前 via iPhone
    不能再合适
    iseki
        39
    iseki  
       14 天前 via Android
    反正都一样,go 写就是繁琐,语法糖少,不熟悉容易写出 bug 。Kotlin 就是你得先熟悉了才能写🤣
    jinweijie
        40
    jinweijie  
       14 天前
    业务复杂的话不合适。
    idblife
        41
    idblife  
       14 天前
    可以考虑用 python 啊
    django 自带电池
    pkwenda
        42
    pkwenda  
       14 天前
    小项目绰绰有余,简单粗暴部署快
    reter
        43
    reter  
       14 天前 via Android
    我目前就在用 go 写业务,说实话,不合适。虽然是强类型,但是类型系统弱,需要写大量的代码去处理类型 /数据结构上的转换和封装,判断 err ,判断 nil ,语法糖基本没有。
    sudoy
        44
    sudoy  
       14 天前
    熟悉就合适吧
    securityCoding
        45
    securityCoding  
       14 天前 via Android
    qq 后台基本都在用 go 了
    Morii
        46
    Morii  
       14 天前
    如果是调包侠建议 java ,心智负担低一些
    ChrisCyler
        47
    ChrisCyler  
       14 天前 via Android
    我觉得挺合适的,当然你得写的多,能有自己一套的脚手架之类的,总之我是 java 换过来的,其中一个重要的理由就是轻量级,性能又还可以,upx 压缩一下,二进制包也就那么几 m ,反正我是觉得开发 web 在某种程度上是可以提高开发效率的,我现在也是把 java 那套能复用的慢慢 copy ,不能就 grpc 处理,不过泛型啥的还是比较蛋疼,工程管理,本地包管理啥的确实有缺陷 go work 也不是那么好用,编译器只能等官方慢慢更新优化了,但是写并发代码是真简单
    Kaier
        48
    Kaier  
       14 天前
    让我想了半年前这个帖子. 切勿引战 / 挖坟

    https://www.v2ex.com/t/829692?p=2
    EminemW
        49
    EminemW  
       14 天前
    你会发现大部分时间在找轮子和造自己的轮子
    yedanten
        50
    yedanten  
       14 天前 via Android   ❤️ 1
    拱火:合适!非常合适,为 go 在 web 开发领域提供发展贡献吧!( doge
    frankies
        51
    frankies  
       14 天前 via Android
    nestjs
    superliy
        52
    superliy  
       14 天前
    @james2013 造轮子还得 go ,就 kv 类型的存储,我看了一下 go 实现的一大把。。
    neptuno
        53
    neptuno  
       14 天前 via iPhone
    @proxychains #24 谢谢提醒,少走 50 年弯路
    AlpacaCode
        54
    AlpacaCode  
       14 天前
    5 楼,突然蹦出个 rust 。。。一下子没绷住
    lionel0806
        55
    lionel0806  
       14 天前
    太合适不过了,从工程角度,代码维护角度都很合适,爽的一批
    lionel0806
        56
    lionel0806  
       14 天前
    哪些说复杂业务不适合用 Go 的,请问你们的业务有 Kubernetes ,Docker 这些复杂吗?
    wangnimabenma
        57
    wangnimabenma  
       14 天前
    我打 PHP 不香?
    KevinBlandy
        58
    KevinBlandy  
       14 天前
    刚被 golang 循环依赖气得罢工摸会儿鱼上 V 站就看到这个贴。
    lizuoqiang
        59
    lizuoqiang  
       14 天前
    @lionel0806 有没有可能是 go 写 curd 很难受
    sep9999
        60
    sep9999  
       14 天前
    @wangnimabenma 钱少[大哭]
    samin
        61
    samin  
       14 天前
    Java 适合写 Web 吗 ?

    Java Web / Go Web / PHP Web / Python Web ....
    code4you
        62
    code4you  
       14 天前
    只要能挣钱 asp 都行 😁
    wangnimabenma
        63
    wangnimabenma  
       14 天前
    @sep9999 #60 瞎说什么实话
    wtfedc
        64
    wtfedc  
       14 天前
    web 业务特点,多是处理 http 请求,入参写各种结构,确实有点繁琐。但是性能方面表现好,语法对并发也很友好。
    emeab
        65
    emeab  
       14 天前
    高情商: 未来可期.
    suofeiya
        66
    suofeiya  
       14 天前
    新秀 Carbon:都闪开,让我来.🤣
    stevenbipt
        67
    stevenbipt  
       14 天前
    生态不好,好多轮子都没有或者没经过长时间的验证,其他倒是没啥
    lizhisty
        68
    lizhisty  
       14 天前
    @KevinBlandy 循环依赖是代码结构设计问题
    witcherhope
        69
    witcherhope  
       14 天前
    不适合业务系统,适合造轮子,如果造轮子是你的业务,就当我没说
    NaVient
        70
    NaVient  
       14 天前
    腾讯 字节 b 站后端都有在用 Go 吧,说写复杂业务不合适的,贵司能达到这几家业务的复杂程度吗?
    gam2046
        71
    gam2046  
       14 天前
    以前是 Java ,新手 go 的水平。

    个人感觉 go 更适合中间件开发,业务逻辑过多的,go 相比较而言,不如其他已经成体系的语言。

    go 更适合偏向算法类或者纯 IO 密集型,繁重的业务逻辑会让 go 并不太好维护,当然啦,更多是我水平不够。
    Yeen
        72
    Yeen  
       14 天前
    nodejs 搞定一切
    dog82
        73
    dog82  
       14 天前
    前一两年对接微信支付,官方文档提供了 java 样例代码也就十几分钟就通了,go 折腾了半天
    iosyyy
        74
    iosyyy  
       13 天前
    @NaVient 有用不代表能接受复杂业务 另外腾讯后端主要是 c++ b 站用后端主要是 b 站最开始用的 php 写的后来用 go 重构 go 本身的简单才是 b 站选择 go 的原因 这样能快速把现有的 phper javaer 都转换为 go
    lancelock
        75
    lancelock  
       13 天前
    一般 最近再把我的个人项目从 go 迁移到 c#
    stoluoyu
        76
    stoluoyu  
       13 天前
    我投 rails 一票(逃
    fuxkcsdn
        77
    fuxkcsdn  
       13 天前   ❤️ 1
    @lionel0806 有没有考虑过人家说的业务复杂是说有很多 多表 多源 的 sql 查询,然后一大堆外部 api 需要调用
    然后一个报表今天写完明天要改的那种复杂
    snowlyg
        78
    snowlyg  
       13 天前
    php ,快上车没时间解释了
    mingsz
        79
    mingsz  
       13 天前
    建议 Rust 🐶
    jackliang007
        80
    jackliang007  
       13 天前
    非常合适
    zh6335901
        81
    zh6335901  
       13 天前   ❤️ 1
    很多人搞错一点,业务复杂度不等于解决方案的复杂度。互联网大厂的某些项目可能业务不是很复杂,但是因为高负债、高并发等非功能需求导致解决方案实现复杂,这种项目可能 go 是比较合适的。但是如果业务逻辑本身的复杂度很高的项目,可能 go 就不如 c#、java 合适了
    kkbblzq
        82
    kkbblzq  
       13 天前
    go 写业务最大的问题其实还是生态环境不够完善吧,比如之前要搞工作流引擎,最后发现 go 这边没有成熟的方案,而 java 有 Activiti 啥的,就连 bpmn 在 go 这边也只有很原始刚开始做的库,那没办法,就只能自己造轮子了
    Ufo666
        83
    Ufo666  
       13 天前
    那 go 主要用来干嘛??
    lambdaq
        84
    lambdaq  
       13 天前
    @Ufo666 造中间件轮子升职加薪。
    xiaotianhu
        85
    xiaotianhu  
       13 天前
    @NaVient 微服务噢。
    比如说我司,一个 CRUD 业务,基本上可以说就是 1-3 个写入接口这种业务复杂度吧。
    后端拆成 10 个左右的项目,有负责热数据的,冷数据的,proxy ,统计,等等。
    这样每个项目复杂度就下来了,用 go 就合适。
    但是我司基础设施牛逼啊,切流,身份验证,负载均衡,文件系统什么的 都是现成的。

    如果你都写在一起,就不好玩了。
    redvoilin
        86
    redvoilin  
       13 天前
    @lionel0806 这是业务系统?
    redvoilin
        87
    redvoilin  
       13 天前
    go 写业务系统纯粹是给自己添堵,go 的设计目标是开发一些基础组件的
    pastor
        88
    pastor  
       13 天前
    在新业务没有历史包袱、并且能够实现人力招聘的前提下,大厂都在拥抱 go ,只剩下半桶水程序员还在吵吵不适合
    pastor
        89
    pastor  
       13 天前
    很多人怕是不知道某些大厂内部的 java 基础设施有多么让人作呕。
    没错,我说的就是阿里之流
    javaisthebest
        90
    javaisthebest  
       13 天前
    @pastor

    找个基础设施比阿里好的出来?
    redvoilin
        91
    redvoilin  
       13 天前
    @pastor 没用 go 写过业务代码还真信了你了
    EminemW
        92
    EminemW  
       13 天前
    @NaVient #70 有没有可能人家内部已经造了很多轮子
    pastor
        93
    pastor  
       13 天前
    @javaisthebest 丰富完善能罩得住业务,但是太丑陋了,让人作呕是因为太丑不是它不丰富不完善。另外,好多阿里同学自己吐槽他们内部框架臃肿不堪、性能低下。
    我不知道兄弟你是不是阿里的或者是哪个部门的,或许你见过的阿里的东西比较好?能否推荐个我去学习下,免得我也被各种阿里同学或者非阿里同学整天骂阿里的 KPI 开源误导了(不过我看过一些阿里的开源,确实挺让人作呕的)。就是因为听说了这么多,所以阿里的哥们想内推挖我都直接拒绝了,审美取向不合。。。
    pastor
        94
    pastor  
       13 天前
    @redvoilin 很多团队还真没怎么用对 go 。尤其历史包袱重的团队,或者比如 php java 转 go 的同学,我并不是鄙视 phper javaer ,而是因为以前积累的基本功造成的技术栈审美取向与 go 确实有较大不同,所以就像很多人喷 go 一样,gopher 也喷绝大多数其他语言的解决方案
    saucerman8
        95
    saucerman8  
       12 天前
    上份工作是用 gin 写过 web ,感觉生态还不是很全,业务逻辑复杂的时候,要自己写的逻辑比较多,比较累,但是运行速度效率这方面没什么问题。
    sjmcefc2
        96
    sjmcefc2  
       12 天前
    看下来还是 java 一桶天下啊,都是框架了
    xsen
        97
    xsen  
       11 天前
    路过,还是想问下说业务复杂的各位,
    除工作流之外,正心请教还有哪些属于各位说的复杂的业务?

    当然,若是没用微服务来拆,一把梭哈做个复杂的单体应用——这样的情况不用回答,我承认是非常复杂
    xsen
        98
    xsen  
       11 天前
    另外,对于某些说 go 的基础设施不齐全之类(如限流、监控、负载均衡、调用链等),
    真心建议去了解下 k8s ,还有服务网格
    RedisMasterNode
        99
    RedisMasterNode  
       11 天前
    @lizuoqiang 不可能,基本都是需要一套脚手架+代码生成工具+ bla bla bla ,纯 CRUD 自己要做的事情可少了。可能不比成熟的语言快,例如 php 、python 、java ,但是开发效率肯定不慢....
    a132811
        100
    a132811  
       9 天前
    我们组的后端基本是 go ,比 python 好维护太多了,比 java 代码少且好读

    不用太担心泛型不够用、重复的代码、性能不够、生态,uber 和字节都大规模的使用,反正造轮子、看第三方包源码都很方便。

    现在基本不用自己造轮子了,先看看这里 https://github.com/avelino/awesome-go

    我最喜欢的,松散的 package/struct method 等设计,重构代码、组合代码、测试代码都太方便了,几乎是一行流、一键完成,修改调整文件名都不需要重构代码本身
    1  2  
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4479 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 02:46 · PVG 10:46 · LAX 19:46 · JFK 22:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.