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

16977 次点击
所在节点    Go 编程语言
119 条回复
lancelock
2022-08-08 17:12:31 +08:00
一股子饭圈味
nyakoy
2022-08-08 17:18:43 +08:00
每月一战,这个月来的有点早。
datafeng
2022-08-08 17:31:12 +08:00
@nyakoy 这个月有点不调,嗯就喜欢这种帖子,顺便说一下 PHP 是最好的语言..
pein
2022-08-08 17:46:22 +08:00
web 方面,现在 Go 语言在性能上也已经比不过 php 了,看最新压测排行的第 35 位 https://www.techempower.com/benchmarks/#section=data-r21&test=fortune
Kiriri
2022-08-08 17:50:08 +08:00
没有人说 go 写不了业务逻辑, 能写和写的舒服是两码事
dqzcwxb
2022-08-08 17:51:56 +08:00

先有鸿钧后有天,golang 还在鸿钧前
zapper
2022-08-08 17:57:19 +08:00
你们在吵的时候我一个叫小申的同事又手搓 01 并部署一套业务了,谁的问题?
Al0rid4l
2022-08-08 18:36:06 +08:00
冷知识: Python 是强类型语言
强类型弱类型静态类型动态类型都分不清楚...看到「强类型语言是比脚本语言好很多」就不想看下去了
XCFOX
2022-08-08 19:26:47 +08:00
@Hanggi #58
TypeScript 的类型系统是十分强大的。得益于 TypeScript 的装饰器与泛型系统,TypeORM 的查询参数是强类型的,无需包一层 interface ,在编译时就会有类型检查。
相比之下,go 要实现比肩 TypeScript 的类型安全 就只能参考 ent 这种 code generation 的模式。
raykle
2022-08-08 21:18:40 +08:00
袁隆平袁老的问题
GeruzoniAnsasu
2022-08-08 21:31:53 +08:00
OP 如果搞得明白会在语言帖子里吵起来的都是些

1. 没有权限或能力控制选型
2. 搞不明白自己的系统需要什么特性
3. 只接触过两三种语言写过一两种范式

的人,就不会发这个帖子了



「为什么用 go 写 web 」跟「为什么用 js 写 arduino 」 是完全一致的问题,想想为什么后者没人吵
Sendya
2022-08-08 22:14:46 +08:00
说句实话,写了几年,写 crud 多少有点痛苦。
inframe
2022-08-08 22:53:22 +08:00
哪个能让我今天最早下班,我就用哪个;
所以我选择 Python😎
dhssingle
2022-08-08 22:54:43 +08:00
C# EF Core

var article = await context.Articles.FirstOrDefaultAsync(x => x.Title == "Tales of Ten Worlds")
Aloento
2022-08-08 23:50:02 +08:00
写 curd 很痛苦
then ,ASM 也能写,你用吗?
limon
2022-08-08 23:56:30 +08:00
去掉 Goroutines 这门语言我不会多看一眼,就这么简单
Actrace
2022-08-09 00:01:11 +08:00
我觉得业务问题倒是其次,之后可以通过迭代来增加功能以解决这些问题。

go 现在最大的问题是过分依赖 github ,这是从语言层面的依赖,更具体一些,就是产品定位。
作为一个工具,肯定不能去依赖一家商业公司来实现某些功能。没有哪家公司或者开发者会希望明天 github 没了,go 就不行了。这跟 serverless 的包袱几乎一致了。
zggsong
2022-08-09 00:05:11 +08:00
@dhssingle 有一说一,作为菜鸟我只写过 c#和 go ,crud 方面,操作数据方面 c#的确太舒服了
ccppgo
2022-08-09 08:44:44 +08:00
@dog82 redis 什么时候成了 go 写的,我版本落后了?
p1gd0g
2022-08-09 09:38:15 +08:00
我一个全栈( c#,go )体会最深了,早点下班不香吗

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

https://ex.noerr.eu.org/t/871389

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

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

© 2021 V2EX