P H*_*ans 1 indexing dictionary go
这段代码正在运行,但我不明白如何.
在下面的代码中,hostProxy [host]可能包含也可能不包含函数.我不明白变量"ok"是如何定义的,或者它是如何获得它的值的.它没有在此行之前定义.
if fn, ok := hostProxy[host]; ok {
fn.ServeHTTP(w, r)
return
}
if target, ok := hostTarget[host]; ok {
....
}
Run Code Online (Sandbox Code Playgroud)
这在Spec:Index表达式中有所介绍:
map[K]V用于特殊表单赋值或初始化的类型的映射a上的索引表达式Run Code Online (Sandbox Code Playgroud)v, ok = a[x] v, ok := a[x] var v, ok = a[x] var v, ok T = a[x]产生一个额外的无类型布尔值.的值
ok是true如果该键x存在于地图,和false其它.
所以例如这段代码:
if fn, ok := hostProxy[host]; ok {
fn.ServeHTTP(w, r)
return
}
Run Code Online (Sandbox Code Playgroud)
意味着host从hostProxy映射中获取与键相关联的值,在fn变量中创建和存储值,以及变量中的结果(是否在映射中找到键)ok.并且此ok变量(将是类型bool)用作if语句的条件.因此,如果host密钥位于hostProxy地图中,则会继续使用它.
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |