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

2022-08-08 12:23:50 +08:00
 Hanggi

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

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 语言写不了业务逻辑,还是你的编码或理解能力上有不足呢?

14761 次点击
所在节点    Go 编程语言
119 条回复
coderluan
2022-08-08 13:30:04 +08:00
正文写的挺好,怎么起了这么个烂标题。
charmToby
2022-08-08 13:30:50 +08:00
语言之争有没有尽头。
nine
2022-08-08 13:41:54 +08:00
想用你就用呗。

至于 Star 的数量问题。你可以搜一下,什么叫“劣币驱逐良币”。

你觉得 10 块钱的冰淇淋币 2 块钱的好吃,可能是因为你压根没有听说过有 100 块钱的。
Mrun
2022-08-08 13:48:07 +08:00
@wonderfulcxm #20

我觉得也是,大部分都是 curd boy ,为什么要在这上面给自己找虐?其他语言有成熟的语法糖,你天天秀我性能好,有个锤子用,大部分项目难维护是性能原因么?
q1angch0u
2022-08-08 13:48:51 +08:00
我的编码或理解能力上有不足。
musi
2022-08-08 13:51:15 +08:00
这都能骂起来,还是前端好,只能运行 JavaScript
RubyJack
2022-08-08 13:51:52 +08:00
javaboy 马上赶到战场
Oktfolio
2022-08-08 13:53:03 +08:00
第 1 点,因为 go 使用 github 作为依赖仓库,所以 repo 的 star 数普遍偏高。

go web 框架普遍使用 :param 作为路径参数([API design guide - Google Cloud]( https://cloud.google.com/apis/design/custom_methods)),比如你上面说的 gin ,所以我 star 了 gin 但不用它。
Leviathann
2022-08-08 13:53:48 +08:00
@XCFOX 这么看起来这个 gorm 好野鸡啊,连最基本的类型安全都没了,而 ent 做为 FP 大厂的作品观感上就强不少,不愧是创造了 react 的公司
Morii
2022-08-08 14:01:23 +08:00
写不了 = 考虑效率 、心智负担后,不选择 go

在这个为前提上讨论,我觉得没问题呀

如果是 crud boy 的话,不选择 go 我觉得没问题。。
Morii
2022-08-08 14:06:48 +08:00
>>> 很多人说 Go 语言写起来痛苦,说的其实是那些理应支持的语法糖或工具函数在 Go 语言里并不提供,而需要自己去写所带来的痛苦。不提供不意味着无法实现,只是让你用最基础的语法结构去实现。换来的是更快的编译速度和非常低的阅读门槛。

这点真的有人赞同吗?

接手一个项目还要去看前人封装的数据结构。以及对应的 api ,换一家公司还要重新熟悉
2024
2022-08-08 14:12:15 +08:00
我写 go 跟写 php 一样,平时就 curd 多,现在一年下来了,内部积累的代码有时候可能比 php 还快了。
贴一段 go 代码, 有差别吗
~~~~
// 读取列表数据 select * from users where id > 1 and create_ed >= now() limit 16
users := NewOrmUsers().WhereIdGt(1).WhereCreatedAtGte(database.Now()).Limit(15).Get()
fmt.Println(users)
~~~~

https://github.com/go-home-admin/go-admin/blob/main/app/entity/demo/user_test.go
dqzcwxb
2022-08-08 14:12:18 +08:00
@tairan2006 #13 我只想说,暴露 go 吹本质了
"你不吹 go,go 吹就骂你"
fournoas
2022-08-08 14:13:44 +08:00
“又不是不能用”
TWorldIsNButThis
2022-08-08 14:14:09 +08:00
没有便捷语法或被广泛采用的库的支持,那么在实际上的业务开发里基本就等于没有这个功能
kindjeff
2022-08-08 14:15:07 +08:00
新的风暴已经出现
ufan0
2022-08-08 14:19:42 +08:00
我还在上大学的时候看到部分公司开始使用 go 进行编写基础组件,感觉挺不错的。

毕业后开始参加工作接触到金融业务复杂系统,就这,想不懂为什么用 go ,kpi or okr boy ?
mxT52CRuqR6o5
2022-08-08 14:23:29 +08:00
反向推销可还行
arischow
2022-08-08 14:26:06 +08:00
啊,比 star ?
icyalala
2022-08-08 14:27:30 +08:00
@Hanggi 这么说用 C 写业务逻辑也有啊: https://facil.io/ ,把帖子里的 Go 换成 C 看看?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/871389

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX