Go语言系列知识快速查看入口
本章内容
Go的应用场景
-
服务器编程:如处理日志、数据打包、虚拟机处理、文件系统。
-
微服务
-
云平台:云服务很多都是采用Go进行开发,而且云平台基础设施如docker、kubernetes等也是Go开发。
-
Web:网络编程这一块目前应用最广,包括Web应用、API应用、下载应用,而且Go内置的net/http 包基本上把我们平常用到的网络功能都实现了。
-
区块链:当前两个主流的区块链框架,分布式记账本框架 hyperledger 和以太坊合约框架 go-ethereum 都是使用 Go 开发; 再比如 fabric 是目前最知名的联盟链, 也有 go 语言的版本。
-
分布式:诸如数据库中间件、分布式系统/分布式存储、代理服等项目很多是采用 Go 开发,比如前面的介绍 cockroachdb、etcd 。
Go的不适合领域
-
GUI:例如开发IDE、移动APP。
-
数据分析、机器学习、大数据:需要极完整的集合框架、流畅的推导式、丰富的高阶函数。
-
分布式计算:需要分布化地远程执行闭包,自动地序列化/反序列化;而不是新起进程执行二进制分发、进程间交换数据。移动闭包/Lambda 的成本会小于移动大块数据。
-
插件化定制、进程内热升级:需要语言虚拟机的支持,例如动态类加载,依赖注入。
-
企业软件: 需要 COTS 交付、二次开发,基于非源代码的接口扩展,可以在重启或运行时启用新特性,无需编译整个系统的源代码。这类软件常常用像 annotation 一样的 APT 机制对语言元素做一定程度的元编程或修改。
- 超大型软件和团队:需要很明确地 on the fly 地知道哪个接口被哪些类型实现了,哪些类型实现了哪些接口。Eclipse 有 1000W 行 LOC,InteliJlDEA 有 700W,JDK 自身也有 700W,Hadoop+HBase 有 400w,JBoss 等应用服务器有 600W,Spring 框架有 200W,其它第三方库…日常开发的 JAVA 商用软件,你常常跟几千万 LOC 打交道。但好像 GO 超过 50W 的开源项目只有限的 Docker、K8S 等。GO 的开源生态系统仍然极其弱小,能用于商用产品质量的开源库只有 Beego 等屈指可数的几个。许多依赖开源库只有 2 位数的 star。
参考链接:Go应用场景与适应项目