登录
首页 >  Golang >  Go问答

把握有价值的上下文

来源:stackoverflow

时间:2024-03-21 17:34:24 409浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《把握有价值的上下文》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

最近我决定看一下上下文包,我觉得我掌握了它的窍门。然而,在视频中我看到了这行看起来很奇怪的代码,我部分理解了它,但不明白最后一点。

我没有包含该视频的完整代码,因为我觉得它无关紧要。然而我的问题是,这是什么意思:“.(*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*log.Entry 类型的值。否则 ok 将为 false(并且 log 将为 *log.Entry 类型的 nil)。

查看语言规范:https://golang.org/ref/spec#Type_assertions

理论要掌握,实操不能落!以上关于《把握有价值的上下文》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>