类型

  • 通过类型声明,将具有不同意义的变量显式区分,避免将其进行混合运算。

    切片

  • 传值有一定的代价,但是换取的好处是切断了对原始数据的依赖

    • 切断原始数据依赖可以尽快释放其占用的内存(原始数据可能是大量数据的集合)

      函数

  • 函数参数传递变量是值传递,闭包使用外部变量的方式是创建其指针

    并发

    管道 Channel

  • 无缓冲管道

    • 接收操作总在发送完成之前执行
      • 发送完成之前,从管道接收数据会阻塞
    • 发送操作总在接收完成之前执行
  • 有缓冲管道
    • k 个接收操作总在第 k+c 个接收操作完成之前进行, c 为管道缓冲大小

  • Go语言库的实现习惯: 即使在包内部使用了panic,但是在导出函数时会被转化为明确的错误值。

    RPC

  • Go语言的RPC规则:方法只能有两个可序列化的参数,其中第二个参数是指针类型,并且返回一个error类型