Go 语言的设计哲学
简单
显示
组合
并发
面向工程
简单
Go 语言特点
仅有 25 关键字,主流语言最少
内置垃圾回收,降低开发人员内存管理的心智负担
首字母大小写决定可见性,无需通过额外的关键字
变量初始化类型零值,避免随机数作为初值的问题
内置并发支持,简化并发程序设计
内置接口类型,为组合的设置哲学奠定基础
原生提供完善的工具链,开箱即用
总结
保证语言简单,简单通常意味可读性好以及维护性和可靠性好
显示
简单来说明确变量之间比较必须类型一致,不一致需要手动转换
Go 语言错误处理的形态是采用的显示基于值比较的错误处理方案,必须使用 return 显示返回
但是最新版本 Go1.18 正式支持泛型
组合
Go 语言无类型层次体系,各类型之间相互独立,没有子类型的概念
每个类型都可以有自己的方法集合,类型定义与方法实现正交独立的
实现某个接口,无需特定关键字修饰
包之间相对独立,没有子包的概念
垂直组合
Go 语言支持类型嵌套,以此实现新类型,满足设计要求,新类型和被嵌套的类型两种之间无任何关系,新类型实例的调用方法时,只跟方法的名字有关,即通过类型嵌套,快速让一个新的类型"复用"其他类型已经实现能力,
水平组合
使用接口来实现
接口是方法集合,通常接受接口类型参数的普通函数进行组合
goroutine + channel 实现类似 unix pipe 能力
总结
组合原则实质塑造 Go 程序骨架,类型嵌入提供了垂直扩展能力,接口是水平组合关键
并发
原生支持并发,采用用户层轻量线程 goroutine,占用资源比较小,代价低
内置 channel 用于传递消息和实现同步,并通过 select 实现多路 channel 并发控制
面向工程
Go 编译速度快
去除依赖包
导入不使用无法编译,解析
不支持默认函数参数,增加代码清晰度和可读性
增加类型别名 ,支持大规模代码库重构
评论