以下观点纯属个人主观感受
1.协程体验完美 无需内核态的上下文切换吊打 jvm 的线程,语法层面也是完爆 一个关键字就完事 go func 吊打 new thread(啰嗦一大堆).start ()
2.类型推断也不要太爽 := 和 var 用的不亦乐乎 jdk10 的 var 不知猴年马月才能用到
3.自定义类型也很香 type Unixtimestamp int64 type Timestamp int64 规范又优雅,结构体可以当值用也可以 new 一个当对象用,关键是再也不用定义恶心的包装类型了以及得注意拆箱的空指针了
4.自带的轮子少但够用,日期处理一个 time 包就够了,date 、calendar 、localdate 、localtime 、sdf 一边去吧,线程安全 mutex 就够用了、异步转同步 channel 也够了
5.Gin 使用体验下来也是简洁程度吊打 mvc+springboot ,启动速度更是完爆之,直接交叉编译一个可执行文件丢到服务器上,远离 jar 包
6.多返回值和函数传参很赞,闭包就更不用提了

写小项目是爽,大项目主要还是看生态,Go 的 web 框架要把各种功能凑齐到 spring 的程度也要一番折腾。

Go 在大规模工程和高并发工程下的表现如何?有了解的吗

呵呵,各种吊打

Java 等 Loom

写 go 得的就很馋 java 增加了那一系列函数式特性,太香了

蜜月期总是好的

楼下解释了,各种吊打

不急,你的想法很快就会发生变化

有人会写 new thread. start?

同 Java 接触 go ,最不适宜的无非是 err!=nil 和分包的方式,一个目录下所有的文件都算一个包...

还有人 new Thread 的么?至少我们这边大多用 reactor 了。

啊对对对

虽然用了很多年 Go ,但是 2022 年了,C++ 都有原生无栈协程了,第一条不能打了

盲猜楼主工资 1 万 5 以下?

像事务的东西能不能像 Java 加一个注解就可以?

楼主说的这些点 C# 早就做到了而且做的更好, 建议体验一把.

我原以为是来喷的,没想到是来夸的,趁这机会我高低得开 10 个箱子

你怎么敢在这喷 Java 的?难道想被喷到哭吗

lombok 也可以用 val 和 var 的

我看这次吵不吵得起来

无语,你这样的工资多少都白瞎

不不不,我的意思是,我感觉纠结于这些的,一般都。。

支持,java 届的人间清醒。
ps:总有很多巨婴程序员觉得 go 没有这不行、没有那不行,其实都是常年写逻辑的你自己不行

都不如 kotlin

#22 也就写习惯了 CURD 简单逻辑的不太纠结这些。如果真都不用纠结,世间岂不早就被 c/cpp 一统江湖了

用 GO 做项目的时候会发现这个要改那个要加 无意中造了好几个轮子。。。 不知道你们有没有这个感觉

scala

有没有可能是你自己不会用 Java ?不会一些最佳实践?

代码写太少了。

了解!

说一下做 java 多长时间了,做了些什么项目?
用 go 多长时间了,做了些什么项目?
给大家一个参考

我感受的最大爽点在编译后的单文件大小,以及在低端设备( arm )上的运行的低配置要求
路由器、机顶盒这种设备,用 C/C++太难写,还大概率没有 gcc ,用 javaSE 几乎不可能,J2ME 也不好用

不如 c#

虽然我用 go ,但是堆业务,exception 还是比 if err != nil 来得舒服的

我只要看标题就知道这个帖子能上百楼

我只要看标题就知道这个帖子能上百楼

私人项目我用 Go 是因为自己的 vps 内存太小,用 Java 跑起来费劲,又不想花钱买贵的,公司项目我推荐用 Go 是因为以前的业务是 PHP ,这帮 PHPer 转 Go 都有点吃力(而且只有一小半的人愿意尝试),Java 更不用想。
所以如果有得选,企业项目我更愿意用 Java ,因为你说的这些爽点,和 Java 下完善的生态、轮子、方案等对比,我愿意舍弃这些爽点。

如果是高并发服务的话,go 确实香,跑在老 i5 Mac 笔记本单机 QPS 20w+,内存占用 50M 可能还不到,静态编译体积几 M ,Docker 镜像只需要 from scratch 或 busybox/alpine ,也就是 jiM 到十几 M 大小( hello world 应用 json 返回,fiber 框架)。

同样的服务用大家最熟悉的 Java Spring Boot ,可能只能几百一千 QPS 吧,内存占用几🐔,镜像体积至少小几百 M (即使只有 JRE+应用也挺大了)。

当然肯定会有人说,用 Spring Boot 比不公平,应该用 Vertx 之类的异步框架。不过现在主流 Java 版本写异步可能还是没那么顺手的,至少不像 go 那么顺手和自然。不然的话,可能 QPS 几 w 单机也还是行的,内存占用稍多些,JVM 本身启动开销大点。

如果不是高并发服务,而是业务复杂些的 2B 应用,go 因为设计比较简洁,写起来可能会非常啰嗦,语法糖各种没 JVM 系的 Spring 框架及 Kotlin 语言那么顺手。收益反而也比较小。( go 开发难度增加很多,部署和运行时带来的收益可忽略不计)

#26 单是文件结构就容易每个项目一种,Go 的最佳实践方案还是不够

Gin 对标 SpringBoot ?甚至连 SpringMVC 都没法对标...

javaers in v2ex: 我们中出 了一个二五仔

kotlin 教做人

又 tm 一个引战贴,😊

go 语言属实是 v 站的流量密码了😆

你掌握了 v 站流量密码

圣战开启!

前几天 C fork 调用 golang 编译的库 结果卡死了....
官方 BUG,没有修复

比 hello world ,PHP 都可以将近 40 万 QPS , workerman.net/doc/webman/ 测试结果在这

PHP 还是强啊👍

跟我大学时刚接触的 PHP 相比,应该已经不是一个概念了

————
看了下,排名里你贴的这个 PHP 框架跟 fiber-prefork 的 QPS 基本一样了。确实很强。
Java 的好多异步框架名列前茅,后续 Java 17 (还是多少来着)的类协程语法支持好了后,应该真的大有可为了。
好多 PHP 的框架也都在 30w QPS 以上,这在以前真的很难想象,感觉在好几年前,就算是 php-fpm 也很难达到单机十几 w 的并发。时代进步真快。

你要写 php 会吹出神了。。。

java 唯一缺点就是太啰嗦

go 的时间库设计成那个样子不一定是好事,有些场景无法很好的处理。
协程的话,建议你看下 Kotlin 的,和 Go 的轻量级线程不是一类东西,各有各的好处。
typealias 这个确实不错,等泛型实装应该更好一点。
Gin 和 Spring 全家桶不是一种东西啊。
使用多返回值表达错误这从根本上就是裂开的,不比状态码强。(本条个人观点,勿喷)

仅仅说下协程,kotlin 的 coroutine 优点是结构化并发,缺点是异步函数具有传染性。

goroutine 刚好相反。

reactor 本质还是异步,甚至比异步更恶心,写习惯应该还能顶住。
因为本质是低端语言的(手动狗头)。从语法上来说我觉得 go 比 nodejs 还要低端,不过 nodejs 也是经常造轮子。

以前我也觉得 nodejs 很方便,比写 java 方便多了。不过也就是那样,在大型的工程,nodejs 还是要在旁边呆着,不好搞。觉得 java 不好,去看看 C#,应该是= java 20 版。

别的不说,单就看到 date 、calendar 、localdate 、localtime 、sdf 这几个词就一把辛酸泪。

非常不理解,语言这种东西为什么要站队,都会不香吗?

适合做中间件,高并发相关的后端

个人项目用 go 写非常爽

特别是小型的服务

果然只是初步体验。。
虽然我现在也主要用 Go ,但是总还是觉得 Go 缺的东西太多了。。
你说的这几点除了 1 协程更方便,5 Go 更轻量以外,其他应该没有一个是 Go 比 Java 好的,最多只是各有千秋。。

其实 Go 协程也是有传染性的,就是大家都要用 Go 。以前用 C / CPP 写的都要重写。

啊?这算啥传染性 [狗头]

那用 rust 不是更爽,连 GC 都不用🤣

C#不考虑 async 和 loom 不同的话,应该是 java26+

那你年薪有 60 万以上吗?

Java 也能自己封装一个线程池啊,方便不方便还不是自己说了算。。。

个人项目还行,主要是用于替代 python 了,稍微严谨的项目还是用 Java,至少我喜欢这样

难道就没有体验过 var a := int(math.Max(float(b), float(c)) 吗

比 60 高一些。。

看了你的代码,感觉整个人都脏了,这可能就是我们理解不了的指导思想,引入泛型以后是不是就能解决这个问题了。

感觉好像理解错了,应该是人家就不想实现这样的东西

只是单纯地因为讨厌其语法而不想学 GO 。

你 java 还在用 new Thread 那自然会觉得别的语言不错...

线程池 submit 就舒服了?

体验过了,很难受,又没办法😂

说到这个我就情不自禁的提起,常年写 C++的人偶尔写一下 python 是多么神清气爽,心旷神怡了

666😂

用 go 写一个类似 spring 的东西也不难吧,,,

17 年开始写 c ,go ,后来一直是 go ,,,,这些年,明显感觉 go 的人越来越多了,17 年时候只记得 jd 已经开始招聘 golang 工程师了,但当时招聘 go 的还是太少,,,

go 语言,慢慢的就会凑够包管理、泛型、异常处理了,别急,会越来越像 c#的

jd 的 go 也很少