最近,我决定看一看上下文包,我觉得我掌握了它。但是,在视频中,我看到了这段看起来很奇怪的代码行,部分地我理解了它,但听不到最后一点。
我没有包含该视频的全部代码,因为我觉得它无关紧要。但是我的问题是,这是什么意思:“。(* log.Entry)”。感谢您的答复,我已经在多个示例中看到了这一点,但从未说明,它将我认为是接口{}的日志转换为* log.Entry吗?
func index(w http.ResponseWriter, r *http.Request {
log, ok := r.Context().Value(logger).(*log.Entry)
...
...
}
这是一个类型断言。从获得的值r.Context().Value(logger)
是interface{}
,类型断言检查基础值是否是指向的指针log.Entry
,并且将其设置ok
为true和log
type的值*log.Entry
。否则ok
将为false(并且log
将为nil
类型*log.Entry
)。
请参阅语言规范:https : //golang.org/ref/spec#Type_assertions
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句