编写一个程序限制10个goroutine 执行,每执行完一个 goroutine 就放新的goroutine 进来
和其他语言相比,Go 有哪些优势
Go 由 Google 设计,目标很明确:让大型工程的开发、编译和部署更简单高效。它的优势主要体现在以下几个方面。
1. 语法精简,上手快
Go 只有 25 个关键字,没有类继承、没有异常、没有复杂的泛型体系(1.18 后才引入简洁的泛型)。语言设计偏务实,很多特性宁可不加,也不让代码变得难懂。新人通常几天就能读懂项目代码。
2. 原生支持高并发
Go 在语言层面提供了 goroutine 和 channel。
- goroutine 是用户态的轻量级线程,初始栈只有几 KB,一台机器上轻松开几十万个。
- GMP 调度模型 由运行时把大量 goroutine 调度到少量系统线程上执行,切换开销远低于操作系统线程。
- channel 提供了“通过通信来共享内存”的方式,减少显式加锁。
go
results := make(chan int)
for i := 1; i <= 3; i++ {
go func(n int) { results <- n * n }(i)
}
for i := 0; i < 3; i++ {
fmt.Println(<-results)
}3. 统一的代码风格
官方自带 gofmt,所有人的代码格式都一样,不用争论缩进和括号位置。加上 go vet 等工具,代码可读性和一致性都很高。
4. 高效的垃圾回收
Go 使用并发的三色标记清除算法,配合写屏障,GC 大部分工作和业务代码并行进行,停顿时间通常在毫秒甚至亚毫秒级,对延迟敏感的服务很友好。
5. 编译快,部署简单
Go 编译速度很快,产物是静态链接的单个二进制文件,不依赖运行时环境,拷到服务器上就能跑,也很适合打成体积很小的 Docker 镜像。交叉编译只需设置 GOOS、GOARCH 环境变量。
6. 标准库完善
HTTP 服务、JSON、加密、测试、性能分析(pprof)等都在标准库里,不引入第三方库也能写出完整的网络服务。
适用场景
云原生和基础设施(Docker、Kubernetes、etcd 都是 Go 写的)、微服务后端、网关、命令行工具、高并发网络服务。
总结
Go 的核心优势可以概括为:语法简单、并发强、风格统一、GC 停顿短、编译部署方便。它不追求语言特性丰富,而是追求工程效率,这也是它在后端和云原生领域流行的原因。
📮 联系方式
微信:BuZhiCoder | QQ:1776418445 扫码添加,备注「求职」优先通过
