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

说 Go 语言写不了业务逻辑的请进

  •  
  •   Hanggi · 2022-08-08 12:23:50 +08:00 · 14694 次点击
    这是一个创建于 626 天前的主题,其中的信息可能已经有所发展或是发生改变。

    并不打算引战,单纯出于好奇。

    https://github.com/gin-gonic/gin
    https://github.com/beego/beego
    https://github.com/labstack/echo

    把前几名的 Go 语言后端框架加一起都 10 万星了。

    https://github.com/spring-projects/spring-boot
    https://github.com/laravel/laravel

    Gin 6 万 1 ,spring-boot 6 万 2 ,laravel 7 万。
    虽然不能说明一且,但至少说明很多人在用。


    首先强类型语言灵活性肯定是不如脚本语言的,所以没必要争个高低,PHP 、Node.js 、Python 这类脚本语言写业务逻辑能力是最强的。

    但在可维护性上,强类型语言是比脚本语言好很多,所以 Typescript 的可维护性是远胜于 Javascript 的。


    回到 Go 语言,
    首先要明确的是 Go 语言是一种为了最大化编译速度而牺牲语言特性的一种语言。

    很多人说 Go 语言写起来痛苦,说的其实是那些理应支持的语法糖或工具函数在 Go 语言里并不提供,而需要自己去写所带来的痛苦。不提供不意味着无法实现,只是让你用最基础的语法结构去实现,换来的是更快的编译速度和非常低的阅读门槛。

    对于 if err != nil 只说一句,Error 是一种值。
    https://go.dev/blog/errors-are-values
    (过去也有人提议加入 Try Catch ,但都被否决了)


    最后,还是要看你的需求是什么,Go 语言写业务逻辑可能不是最佳选择,但确实很多人在用 Go 写业务逻辑,它的特性满足了一些人的需求,特别是在云原生领域。

    说写不了的,可以把你的场景细节分享出来,
    解决方案都是有的,接不接受是每个人自己的选择,但是光说 Go 语言写不了业务逻辑,又不说到底是什么场景。
    谁能知道到底是 Go 语言写不了业务逻辑,还是你的编码或理解能力上有不足呢?

    119 条回复    2023-12-26 13:27:19 +08:00
    1  2  
    pkoukk
        101
    pkoukk  
       2022-08-09 10:02:25 +08:00   ❤️ 1
    没说过不能写,只是写着不爽
    就像拿水果刀切土豆丝,不是不能切,但是和切丝器去比,属实脑子不太正常
    huangwei8ku
        102
    huangwei8ku  
       2022-08-09 10:27:53 +08:00
    @Actrace golang 支持建立私有仓库的
    iosyyy
        103
    iosyyy  
       2022-08-09 10:34:56 +08:00
    @yx1989 java 项目很多用的人都直接下的 maven 想下啥 maven 找就行了 github 除非是看源码不然很少有人专门看吧
    iosyyy
        104
    iosyyy  
       2022-08-09 10:44:08 +08:00
    你发这篇博客我在知乎看过 这东西怎么说呢 error 应该是一种特殊的值他应该在程序外处理 而大多数语言做的都是这样的逻辑
    例如 try-catch 实际上是把错误处理和程序逻辑分隔开 大多数语言都是这么做的 因为错误处理很多情况下就是记录一个日志或者让程序挂掉场景很单一
    另外关于为啥被否决 我觉得 1 是历史包裹因为大多数 go 程序都是使用 if err!=nil 来判断异常 而如果引入一种全新的模式会产生大量的包裹问题 就像 java 就有很多这种历史包裹 最典型的例子就是 1.18 才加入的泛型 这种基础的特性知道 1.18 才被加入
    WhiteDragon96
        105
    WhiteDragon96  
       2022-08-09 10:59:16 +08:00   ❤️ 1
    为什么没人发 Java 语言写不了业务逻辑?
    PatrickDingDing
        106
    PatrickDingDing  
       2022-08-09 11:21:17 +08:00
    @interim 本来 go 相关都是日经问题了,但当我看到 redis 是 go 写的这个说法...真有点没想到还能这样展开。
    Narcissu5
        107
    Narcissu5  
       2022-08-09 11:23:11 +08:00
    Java 的很多项目都是大教堂型的,并不很依靠社区贡献代码。甚至还多项目还在用自己托管的 SVN
    oldmanong
        108
    oldmanong  
       2022-08-09 12:02:01 +08:00   ❤️ 1
    没啥好争的,在国内永远是面向工资编程。golang 暂时还是蓝海,所以找工作的内卷程度就比 java/c 家族 /php 等好一点。也因为是蓝海,就有很多公司 /项目有转 go 重构的需求,这工作坑位不就来了?就算没有新业务也能重构老业务,何乐不为。
    yodhcn
        109
    yodhcn  
       2022-08-09 12:06:32 +08:00
    go 是未来,但不是现在,生态上还不够完善,开发速度不如那些成熟的框架
    pengxiaoyu
        110
    pengxiaoyu  
       2022-08-09 16:39:06 +08:00
    真恶心 在 v 站也要流量吗
    jhdxr
        111
    jhdxr  
       2022-08-09 18:54:55 +08:00
    @yodhcn 是未来的语言多了去了,每几年都能出现一个
    @oldmanong 现在选择用 go 重构的,再过几年还得用别的语言重构一遍
    1hscj3sm63
        112
    1hscj3sm63  
       2022-08-09 19:14:33 +08:00
    三元表达式谁来掰扯一下
    nmap
        113
    nmap  
       2022-08-09 20:56:03 +08:00
    吃饱撑的,整天争论这些 lowb 论题😤
    helloword001
        114
    helloword001  
       2022-08-10 14:16:59 +08:00
    我们公司有些 PHP 业务已经往 Java 和 Go 上迁移了
    ninjashixuan
        115
    ninjashixuan  
       2022-08-10 14:26:11 +08:00
    @oldmanong 开源项目也一样大量用 go 重写一堆轮子,新人入场加上生态越来越完善,以后大家讨论的就少了
    xsen
        116
    xsen  
       2022-08-12 22:39:17 +08:00
    我们这边原有技术栈主要是 C++/Java ,目前新业务、产品基本都转 Go ,当然业务主要是 toB 的
    涉及有物联网(节点、网关 /边缘、云平台都有)、资产管理、财务类(主要是第三方系统对接——如金蝶等)

    工作流确实没有合适的,但基于某个开源的半成品自己维护也可以解决问题;别的小规模的轮子,自己造速度也很快,且相对好维护。而且只要有愿意转 Go 的,转了之后都不太喜欢考虑继续写 C++或 Java

    对于 api 或 crud ,基本都是通过代码生成框架代码与 model ;对于 model 部分不满足的,做些定制化开发
    所以实现是否优雅某些情况也不显得那么重要
    zhengchengdong
        117
    zhengchengdong  
       2022-11-04 15:17:06 +08:00
    @Hanggi 来来来试试这个 https://github.com/framework-arp/ARP4G

    //从仓库取出 order
    order, _ := serv.orderRepository.Take(ctx, orderId)

    看上去是不是很自然?
    mlbjay
        118
    mlbjay  
       164 天前
    我写 py 的,反正我用 Py 写同一个功能简单的接口,go 的代码量比 py 高一倍不止。
    loyan666
        119
    loyan666  
       121 天前
    @agdhole ef core 说实在的,丢在像 java 、go 这种领域,很优秀,但是放在.net 圈子里,垃圾。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   997 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:12 · PVG 04:12 · LAX 13:12 · JFK 16:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.