Go
你可能会说
为什么大厂的基础设施都用 Go 写?
为并发和部署而生的编译型语言goroutine 轻量并发、编译成单文件、启动快、内存占用低;语法简单,但复杂业务迭代速度不如脚本语言和 Java。
也常被叫作GolangGo 语言
什么时候选它
- 网关、代理、中间件、CLI 工具
- 高并发网络服务
- 要单二进制部署、低内存、快速启动
什么时候别选
- 复杂领域模型、频繁变动的业务(迭代速度吃亏)
- 团队没有 Go 经验、项目周期又很紧
- 重度依赖 JVM 大数据生态
容易混在一起 · 怎么分
Go≠Java
Go 编译成单文件、启动快、并发模型轻;Java 生态庞大、虚拟线程也在补齐高并发。
Go≠Python
Go 性能与部署简单;Python 开发快、AI / 数据生态强。
Q面试会问什么
- 问:goroutine 和线程的区别?
答:用户态调度,初始栈很小、可增长,创建和切换成本远低于内核线程。 - 问:GMP 是什么?
答:G 协程、M 内核线程、P 逻辑处理器;调度器把 G 分配到 P 上由 M 执行,兼顾并行和低开销。
延伸阅读 · 权威出处