• Go: Finalizers

    这篇文章基于 Go-1.12 版本 Go runtime 提供了一种允许开发者将一个函数与一个变量绑定的方法 `runtime.SetFinalizer`,被绑定的变量从它无法被访问时就被垃圾回收器视为待回收状态。这个特性引起了高度的争论,但本文并不打算参与其中,而是去阐述这个方法的具体实现。 ## 无保障性 举一个使用了 Finalizer 的例子 ```go package main import ( "fmt" "math/rand" "runt...

  • 在 Go 中使用命名返回变量捕获 panic

    这将是一个简短的帖子,灵感来源于 Sean Kelly 十一月份的推特。 > 我发现了一个在 golang 中使用指定的返回值的原因并且现在我感到潸然泪下。 >                     — Sean Kelly (@StabbyCutyou) 2017年11月15日 其目标是为了记录并说明一种有必要使用到命名返回变量的情况,所以说让我们进入正题。 想象你正在编写一些用了可能 panic 的函数的代码,并且无论什么原因(第三方库,向后兼容,等等)你都不能改...