Day1 - [Golang] 总是上dev,prod才发现的nil pointer问题

废话前言

之前很常遇到,开发了老半天后端程式,终于上了dev,结果打没几下api,gcp的alerting就开始狂响...

然后就会看到一片红色的 panic: runtime error: invalid memory address or nil pointer dereference
这时候总会想... 如果能有工具帮我检查该有多好呢?

上週假日开始练习没事就看看科技龙头们的github都是怎么写的,来多多训练自己的思维跟手感
意外的在 uber 的repo中发现了好货 https://github.com/uber-go/nilaway

动手try

二话不说来玩玩看吧
首先安装 go install go.uber.org/nilaway/cmd/nilaway@latest
404... 囧 看起来社群已经有反应这个问题,毕竟也是上週刚开始的专案,就再等等啰

微剖析

根据官方的readme看起来,是基于原生的 nilness check去进行优化,解决一些function间呼叫造成的间接 nil pointer dereference问题

./nilaway.go
初始化了原生的 Analyzer,并且里面放了自己的实作
var Analyzer = &analysis.Analyzer{Name:      "nilaway",Doc:       _doc,Run:       run,FactTypes: []analysis.Fact{},Requires:  []*analysis.Analyzer{accumulation.Analyzer},}
./cmd/nilaway/main.go
func main() {singlechecker.Main(nilaway.Analyzer)}

使用了上面的 Analyzer

第一天就这样拉~~ 下次再继续看 package accumulation


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章