本人是一个 Android 转 Go 的后端业务程序员,我能够顺利转过来,只因 Go 的优点让从写代码到部署投入使用的难度非常低:Go 开发环境搭建非常简单、Go 语法非常简洁、上手 Go 时不用学习框架、应用跑起来就能给客户端使用,不用考虑配置 Nginx 之类、要部署到服务器也就 go build 然后 scp 等等,这些都让我上手后端的过程中没有遇到难度和阻碍。
多年体验下来,我觉得 Go 的优点有: - `语法简洁`:Go 中共有 25 个关键字,很容易上手 Go 编程。 - `灵活`:Go 属于编译型的静态语言,但是 Go 的很多特性使得用 Go 编程像使用动态脚本语言一样的灵活,比如使用 `:=` 初始化变量。 - `标准库齐全`:Go 拥有一个比较齐全的标准库,`net/http` + `encoding/json` 组合即可快速开始 API 开发,`testing` 包是 Go 的使用得最多的单元测试库,等等。 - `多平台支持`:Go 环境支持 Linux 、macOS 、Windows, 在 Linux 、macOS 平台还支持 amd64 和 arm64 CPU 指令。 - `跨平台编译` :支持交叉编译,可以方便地在一个平台打包构建另一个平台的二进制文件。 - `编译时间短`:Go 的编译速度非常快。 - `二进制`:程序编译结果是一个二进制文件,Go 程序生成的二进制可执行文件常常拥有以下优点: - 程序部署速度快,无运行时环境搭建的需求 - 启动快 - 执行速度快 - 内存消耗少 - `内置并发支持` :使用 go 关键字即可启动一个新的 goroutine ,相比 Java 的 Thread/Runnable 快速方便。 - `社区`:Go 拥有一个活跃和回应快速的社区,社区贡献了大量高质量的第三方库包和应用。 - `版本的升级和演化`:Go 官方团队对 Go 语言的特性升级和演化非常谨慎,Backwards Compatibility 非常好,这避免了 Python 和 Java 等语言的版本悲剧。 - `工程化`:与其他作为学术实验开始的语言不同,Go 代码的设计是务实的。每个功能和语法决策都旨在让程序员的生活更轻松。 - `代码格式`:由于单一的标准代码格式,Go 通常被认为比其他语言更具可读性。 - `容器化` :Go 程序的镜像体积小,更加容易分发,更适合用来开发容器化应用。