最近看到 v2 好多人喷 GO 语言,我现在有点困惑

2022-01-26 17:37:12 +08:00
 qq1340691923

我今天想把自己用 go+clickhouse 写的 BI 系统开源出来并发在 v2 让更多人知道的,在发之前我习惯性的逛了一下帖子,发现有很多人对 go 语言充满了恶意。。。编程语言应该是陪伴热爱编程的程序员左右很久很久的,就像玄铁剑与杨过,就像一位不会说话但在身边一直挺你的兄弟一样。真的想不通...

3590 次点击
所在节点    Go 编程语言
26 条回复
XCFOX
2022-01-26 22:01:09 +08:00
我个人感触比较深的是 ORM 场景。C# 有 Entity Framework 、TypeScript 有 TypeORM 、MikroORM 、PHP 有 Eloquent 、Kotlin 的 Ktorm 。看过了以上 ORM 再看 Go 的 ORM 实践就很一言难尽。

优雅的 ORM(TypeORM)是这样的:
```
const article = await articleRepository.findOne({ title:"Tales of Ten Worlds",published:true });
```
从 文字表里取一篇文章,取出来的变量直接从 findOne() 函数里传出来,非常顺畅。

Go (gorm) 语言是这样的:
```
var article Article
db.Where(&Article{Title: "Tales of Ten Worlds", Published: true}).First(&article)
```
先声明 article 为 Article ,再传指针到 First() 里,一下子打破了函数式编程的 「没有"副作用"」「不修改状态」的教条,这里将 article 的类型改为其他也不会有编译时错误。

或者这样(ent)的:
```
article :=client.Article.Query().
Where(article.TitleEQ("Tales of Ten Worlds"),article.PublishedEQ(true)).Limit(1)
```
这样确保了编译时类型安全但将查询条件改成了指令式的罗列,损失了简洁性。
agagega
2022-01-27 00:13:15 +08:00
不是遇到 Go 就喷,就被某些 Go 吹搞反了。同样的逻辑不也可以用在 Apple 版么?
ciki
2022-01-27 09:47:39 +08:00
你觉得大家在喷 GO ,你就把大家喷的点都列出来一一反驳,而不是来一句大家都在喷,我没看见大家都在喷
darknoll
2022-01-27 10:24:04 +08:00
谁敢出来喷一下 c++
NeoZephyr
2022-01-27 10:43:28 +08:00
@liuzhaowei55 现在是 GO 了
chirsgod
2022-01-27 12:54:18 +08:00
@darknoll #24 rust 的黑 c++的也不少啊

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

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

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

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

© 2021 V2EX