选型

Go

你可能会说

为什么大厂的基础设施都用 Go 写?

为并发和部署而生的编译型语言goroutine 轻量并发、编译成单文件、启动快、内存占用低;语法简单,但复杂业务迭代速度不如脚本语言和 Java。
也常被叫作GolangGo 语言
先问一句写高并发服务或中间件?
默认Go→擅长单文件 + 协程→别用复杂业务快速迭代
成熟度采用

什么时候选它

  • 网关、代理、中间件、CLI 工具
  • 高并发网络服务
  • 要单二进制部署、低内存、快速启动

什么时候别选

  • 复杂领域模型、频繁变动的业务(迭代速度吃亏)
  • 团队没有 Go 经验、项目周期又很紧
  • 重度依赖 JVM 大数据生态
容易混在一起 · 怎么分
Go≠Java

Go 编译成单文件、启动快、并发模型轻;Java 生态庞大、虚拟线程也在补齐高并发。

Go≠Python

Go 性能与部署简单;Python 开发快、AI / 数据生态强。

Q面试会问什么

  • 问:goroutine 和线程的区别?
    答:用户态调度,初始栈很小、可增长,创建和切换成本远低于内核线程。
  • 问:GMP 是什么?
    答:G 协程、M 内核线程、P 逻辑处理器;调度器把 G 分配到 P 上由 M 执行,兼顾并行和低开销。
延伸阅读 · 权威出处