• 个人站点
  • CSDN 主页
  • GitHub 主页
  • 本书 GitHub 地址
  • 前言
  • 第一篇:项目布局
    • 项目布局
  • 第二篇:代码风格
    • 1.格式化
    • 2.代码行
    • 3.字符串
    • 4.依赖管理
    • 5.初始化
    • 6.错误处理
    • 7.注释
    • 8.命名
    • 9.流程控制
    • 10.函数
    • 11.单元测试
    • 12.日志
    • 13.杂项
  • 第三篇:功能设计
    • 1.常用数据结构
      • 1.不需要指向 interface 的指针
      • 2.编译期验证 interface 合理性
      • 3.在边界处拷贝 slice 和 map
      • 4.枚举从 1 开始
    • 2.函数
      • 1.方法接收器为值和指针的区别
      • 2.使用 defer 释放资源
      • 3.不要在 for 循环中使用 defer
    • 3.并发编程
      • 1.零值 Mutex 是有效的
      • 2.channel size 要么是 1 或 0
    • 4.错误处理
      • 1.错误处理
    • 5.包的使用
      • 1.使用 time 包处理时间
      • 2.使用第三方 atomic 包
    • 6.程序设计
      • 1.避免使用可变全局变量
      • 2.避免在公共结构中嵌入类型
  • 第四篇:最佳性能
    • 0.导语
    • 1.常用数据结构
      • 1.反射虽好,切莫贪杯
      • 2.避免重复转换字符串到字节切片
      • 3.指定容器容量
      • 4.字符串拼接方式
      • 5.[]struct{} 遍历方式
      • 6.切片删除指定元素
      • 7.struct使用指针传递
    • 2.内存管理
      • 1.使用空结构体节省内存
      • 2.struct 布局考虑内存对齐
      • 3.减少逃逸,将变量限制在栈上
      • 4.sync.Pool 复用对象
    • 3.并发编程
      • 1.关于锁
      • 2.限制协程数量
      • 3.使用 sync.Once 避免重复执行
      • 4.使用 sync.Cond 通知协程
  • 第五篇:安全编码
    • 安全编码
  • 参考文献
  • Published with GitBook

参考文献

  • 项目布局
  • 代码风格
  • 功能设计
  • 最佳性能

项目布局

github.com/golang-standards/project-layout

代码风格

Go Code Review Comments

Golang Readability 考点汇总

功能设计

github.com/uber-go/guide

Go语言最佳实践Go-advice

最佳性能

go-proverbs

github/dgryski/go-perfbook

High Performance Go Workshop - Dave Cheney

atomic 的原理与使用场景

极客兔兔 | Go 语言高性能编程

深度解密Go 语言之sync.Pool - Stefno - 博客园

Golang内存分配逃逸分析 - Gopherzhang

Go语言的内存逃逸分析 - Golang梦工厂

powered by Gitbook该文章修订时间: 2024-08-04 07:27:05

results matching ""

    No results matching ""