使用私有空变量作为全局唯一key
今天看代码的时候,遇到一段:
1 |
|
细一思索发现这种实现很巧妙,虽然 ctxKey 实际上只是一个空 struct ,但是 golang 中对于值的比对分为两部分,一部分是 type ,一部分是 value ,两者完全相同,才会视为相等。
上述代码中,keyType 为私有类型,外部正常途径无法获得这种类型,也就避免了会有 ctx 的 key 与 ctxKey 相同,此外空 struct 也不占用额外内存。
使用私有空变量作为全局唯一key
https://fatwang1.github.io/2024/12/26/2024122601/