1.1 特征
- 语法简单
- 并发模型
- 内存分配
- 垃圾回收
- 静态链接
- 标准库
- 工具链
1.2 简介
- 源文件
- 使用UTF-8编码,对UNICODE支持良好
- 每个源文件都属于包的一部分,在文件头用package声明所属包名称
- 以.go作为文件扩展名
- 语句结束分号默认省略
- 支持C样式注释
- 入口函数main没有参数,且必须放在main包中
- 用import导入标准库或第三方包
- 可直接运行或编译为可执行文件
- 变量
- 使用var定义变量,支持类型推断
- 编译器确定变量总是被初始化为零值
- 函数内部可省略var关键字,使用更简单的定义模式
- 表达式
- 函数
- 可定义多个返回值,并对其命名
- 可作为参数或返回值
- 用defer定义延迟调用,无论函数是否出错,确保结束前被调用
- 数据
- 切片slice实现动态数组功能
- 字典map从运行时层面获得性能优化
- 结构体struct可匿名嵌入其他类型
- 方法
- 可以为当前包内的任意类型定义方法
- 可直接调用匿名字段的方法,实现与继承类似功能
- 接口
- 采用duck type方式,无需在实现类型上添加显示的接口实现声明
- 空接口类型interface{},可接收任意类型对象
- 并发
- 整个运行时完全并发化设计
- 通道channel与goroutine搭配,实现用通信代替内存共享的CSP模型