可以使用官方工具 go fmt 自动格式化,或者使用 go imports 工具,该工具就是 gofmt+依赖包自动管理,能够自动增删依赖包引用,以及依赖包的排序分类
注释应该解释:代码作用、如何工作、为什么这样实现、什么情况会出错
**是什么、为什么、会怎样、怎么做 **==》 代码作用、为什么这样实现、什么情况出错、如何工作
包中声明的每个公共的符号、变量、常量、函数以及结构都需要添加注释
任何既不明显也不简短的公共功能必须予以注释
无论长度或复杂程度如何对库中的任何函数都必须进行注释
变量命名:

函数命名:
如:http.serve(…),包名已经表示 http 了,就不用将函数命名为 serveHTTP()
包命名:

如


简单的错误:

复杂错误:

如:
对于错误的判定:

如:

如:

panic 使用规范


recover 使用规范:
recover 在嵌套中无法生效、且只有在当前 goroutine 生效,defer 语句执行顺序是后进先出,要注意一下执行顺序


go 语言官方提供的基准性能测试工具 Benchmark 可以用来衡量程序的性能
go test -bench=. -benchmem
用于 benchmark 性能测试的函数命名以 Benchmark 开头
如:


slice 预分配内存,尽可能在使用 make 初始化 slice 时提供容量信息切片的本质是一个数组片段的描述,包括底层数组的指针、长度和容量
如:

测试:


strings.Builder 处理字符串使用“+”直接拼接性能最差,使用 **strings.Builder**最快
strings.Builder > bytes.Buffer > +
原因:



如在实现 set 时,set 只需要使用 map 的键,因此可以将结构体作为 map 的值


用于 go 语言的性能分析工具,主要功能:
pprof 可以收集程序运行时的性能数据,包括 CPU 使用情况、内存分配、阻塞情况等。

通过 https://github.com/wolfogre/go-pprof-practice 项目可以快速熟悉 pprof 工具
项目使用文档:[https://farmerchillax.github.io/2023/07/04/Go%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7/](https://farmerchillax.github.io/2023/07/04/Go%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7/)

自动内存管理:由程序语言的运行时系统(runtime)管理回收动态内存
double free、 use-after-free 等内存漏洞自动内存管理负责:
相关概念
GC:Grabage collction,垃圾回收


更新:2024-11-12 17:18:11
原文: https://www.yuque.com/c10wn/svr7uf/wrkci8t2m0qk5u1l