gpt4 book ai didi

Go,用值(value)理解上下文

转载 作者:行者123 更新时间:2023-12-01 20:26:23 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Is this casting in golang?

(1 个回答)



What is the meaning of "dot parenthesis" syntax? [duplicate]

(1 个回答)


1年前关闭。




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

我没有包含该视频的整个代码,因为我觉得它无关紧要。然而,我的问题是,这意味着什么:“.(*log.Entry)”。感谢您的回复,我在多个示例中看到了这一点,但从未解释过,它是否将我认为是接口(interface)的日志转换为 *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为真,log到类型 *log.Entry 的值.否则 ok将为假(log 将是 nil 类型的 *log.Entry )。

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

关于Go,用值(value)理解上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62041040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com