Go 写业务真的是好的选择吗

2023-02-03 17:26:30 +08:00
 soupu626
  1. 本人 JAVA 转 GO ,JAVA 练习时长四年,GO 练习时长半年
  2. GO 本身写起来是比较爽,语法简练,不啰嗦
  3. 但是为啥啥啥都要自己写啊,list.contains 都要手写个 forr,还不支持范型(公司项目 go 版本比较低)怀念 guava/common-lang /redission 等等
  4. 个人感觉从语法层面,kotlin 或者 java+lombok 已经可以让语法简单很多了
  5. 同时在业务开发的场景下,语言性能 go 真的能拉开很大的差距么,瓶颈不是一般都在数据库等外部 IO 上,性能层面还有 JIT 这种东西来辅助 JVM
  6. 如果让各位老哥做技术选型,会选 go 作为业务开发的技术栈么
11961 次点击
所在节点    程序员
75 条回复
Mexion
2023-02-03 19:49:29 +08:00
先说我的观点:不是。
我也写了两年 GO 了,写业务比 Go 好的语言多的是,如果说能不能写那肯定能写,但就是各种不爽。
gowk
2023-02-03 20:00:35 +08:00
目前来说写业务确实比不上 Java C#,但是好在容易上手,学习成本极低
有 Go 老人带 + 项目结构清晰,用起来也不是不可以,起码代码人人都能读懂
用 Java ?现在的 Java + 各种库的学习成本太高了,写好不容易
新手写出来的代码惨不忍睹,我们团队就全面转 Go 了
xingjue
2023-02-03 20:08:36 +08:00
java 挺适合业务的
uiosun
2023-02-03 20:15:44 +08:00
@gowk 老哥,请教,怎么规避到处都是 if err != nil 的情况?

转 Go 还没太久,可这个错误判断,已经写的有点麻木了……
xsen
2023-02-03 21:33:20 +08:00
我们用 go 有三年差不多了,复杂的业务其实也不少,不过基本都拆成不同的服务
服务之间是 rest api 或者 grpc ,也没太大的问题

目前看坑呢,一个是维护完善了一个工作流、内部自己实现了一套授权服务
别的感觉没太多的坑。上手容易,包括新手、新生,代码质量差不太多。开发、调试、部署相对简单(对于其它语言来说)
neoblackcap
2023-02-03 22:38:33 +08:00
@uiosun 没有,这个是 golang 得标准错误处理,判断是必须判断的,否则就属于放弃错误处理。想不这样搞,那么就得去用别的语言
dcoder
2023-02-03 23:01:58 +08:00
有段时间没写 Go 了
Go 啥时候能简化满屏 if err != nil {return err}, 才好意思说自己方便写业务逻辑 -_-
iseki
2023-02-03 23:08:17 +08:00
@uiosun 规避不了,忍,或者换 Kotlin (
roundgis
2023-02-03 23:09:33 +08:00
抽插數據庫顯然 c# java 是更好的選擇

go 是 c with gc

用 c 寫業務也不是不可以 以前很多人都幹過

後來都用 java 了
GeruzoniAnsasu
2023-02-03 23:34:28 +08:00
iyaozhen
2023-02-03 23:36:17 +08:00
你 go 不用最新版,搞个蛋
本来生态就不行,还不升级

主要还是生态,如果你公司没有人牵头,用起来还是比较头疼
Valid
2023-02-03 23:50:41 +08:00
综合目前所有的业务场景,go 非常合适,非常灵活
night98
2023-02-04 00:52:33 +08:00
java ,kotlin ,觉得速度慢上 spring-navite ,还有个 quarkus ,go 的异常机制就决定了他本身压根不适合做业务
izzy27
2023-02-04 01:33:19 +08:00
好处是简单
缺点是生态弱,不过这个会改善的
izzy27
2023-02-04 01:34:10 +08:00
go 这个工具真的很简单易用,而且容易上手,实习的时候我看了三天直接上手写单测,一周后就开始做需求了。。
lujiaxing
2023-02-04 02:14:49 +08:00
个人感觉拿来写框架还是蛮好, 但是做业务还是算了吧. GO 的生态甚至不如 .NET Core
Akitora
2023-02-04 02:44:26 +08:00
个人认为 go 最适合写一些网络中间件,写起来又快又舒服。尝试着用 go 写过一些业务,虽然不是不能写但真是各种不舒服…包括项目架构和错误处理之类
fgwmlhdkkkw
2023-02-04 03:42:00 +08:00
@uiosun #24 有两种办法,都需要泛型的支持。

1 ,func Must[T any](v T, err error) T, Must2[T any, A any](v T, a A, err error) (T, A), ...
2, type Result[T any] struct {
Error error
Value T
}
kennylam777
2023-02-04 06:32:20 +08:00
Go 和 Kotlin 都用過,業務還是 Kotlin 好,一流的 Java 生態,語法糖簡單可靠。

Go 用來寫小巧的 infra 工具還好,但業務就算了吧,省下的計算資源是你自己的除錯時間。
realpg
2023-02-04 06:37:44 +08:00
golang 给猴子,一只猴都能写单机 12W QPS 的综合 api server ,套个负载均衡就能百万并发,单机进程使用内存不超过 1GB

java ?猴子还没整明白 jvm 参数呢

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

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

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

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

© 2021 V2EX