[Go进阶|青训营]

60 阅读2分钟

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

go并发编程

Channel

Goroutine

Sync

依赖管理

GoPATH-》Go Vendor -》Go Moudle

  • GoPATH

image.png

  • Go Vendor

image.png

  • Go Moudule

image.png

依赖管理三要素

依赖配置

image.png

image.png

image.png

高质量编程简介及编码规范

01.高质量编程

高质量:

  • 各种边界条件是否考虑晚辈
  • 异常情况处理,稳定性保证
  • 易读易维护

编程原则

  • 简单性

  • 可读性:代码是写给人看的,而不是机器

  • 生产力:团队整体工作效率非常重要

  • 编码规范: 公共符号始终要注释

命名规范

  • 简洁胜于冗长

  • 缩略词全大写,但当其位于变量开头且不需要导出时,使用全小写

  • 变量距离其被使用的地方越远,则需要携带越多的上下文信息。

  • package :

  1. 只由小写字母组成。不包含大写字母和下划线等字符
  2. 简短并包含一定的上下文信息。例如schema、task等
  3. 不要与标准库同名。例如不要使用sync或者strings

最好解释一下代码什么情况会出错。

  • 控制流程:尽量保持正常代码路径为最小缩进

go语言自动格式化工具:gofmt

02.性能调优指南

  • slice预分配内存:尽可能在使用make()初始化切片时提供容量信息

  • map :预分配内存

  • 字符串处理:使用strings.Builder

  • 空结构体:使用空结构体节省内存

  • atomic包:使用atomic包

普通应用代码,不要一味地追求程序地性能。

性能调优原则

  • 要依靠数据不是猜测
  • 要定位最大瓶颈而不是细枝末节
  • 不要过早优化
  • 不要过度优化

性能调优实战案例

  • 服务:能单独部署
  • 依赖:service a的功能实现依赖service b的响应结果,称为service a依赖 serviceb
  • 调用链路:能支持一个接口请求的相关服务集合及其相互之间的依赖关系
  • 基础库:公共的工具包、中间件