入门go学习 | 青训营笔记

59 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天

由于自己之前是Java选手,因此本次go笔记针对Java不同的才会详细记录,其他可能会一笔带过

go的特点

  • 静态编译
  • 编译速度快
  • 天生并发性
  • 提供内存分配、垃圾回收和并发调度
  • 完成的工具链和丰富的标准库
  • 支持多平台
  • 大规模应用于大企业和云计算等服务

类型

var

  • 自动初始化为二进制
  • 显示提供初始值
  • 同一作用域不能重复定义

方法

  • 前置接收参数 receiver,代码方法所属类型
  • 可为当前包内除了接口和指针以外的任何类型和定义方法
  • 不支持金泰方法或关联函数
  • 不支持重载

接口

  • 在设计上,接口接触显示类型依赖(DIP,依赖导致),提供面对对象多态性
  • 定义小型、灵活以及组合性接口(ISP,接口隔离),减少可视方法,屏蔽内部接口和实现细节
  • 不能有字段
  • 只能声明方法,不能实现
  • 可嵌入其他接口
  • 通常以er作为名称后缀
  • 空接口(interface{}, any)没有任何方法声明

匿名嵌入

  • 像匿名字段那样,嵌入其他接口
    • 嵌入相当于导入方法声明
    • 不能嵌入自身或循环嵌入
    • 鼓励小接口嵌入组合
  • 可以有相同签名(方法名、参数列表和返回值,不包括参数名)的方法声明
  • 最终方法集里相同声明仅有一个

类型转化 超集接口可隐式转化为子集,反之不行

泛型

泛型郧西在强类型语言代码中使用参数行类型,实例化时指明类型参数,有时候被称为模板

并发、并行

并发:逻辑上具备同时处理多个任务的能力 并行:物理上同一时刻执行多个并发任务

并行需要多进程或多线程支持,二并发可在单线程上以协程实现 协程通常是指在单线程上,通过写作时切换执行多个任务的并发设计

混合编程

  • asm: 汇编
  • cgo: 与C交互

测试

测试驱动开发时一种软件开发过程中的应用方法

  • 实现:先写测试,然后编码快速实现
  • 重构:在测试保护下,去除冗余代码,提高代码质量