Api GoLang/Mux语法问题:如果ID,Ok=Mux.Vars(r)[“ID”]!好啊
我对Golang非常陌生,我正在阅读某人使用gorilla/mux的API代码,我遇到了这段代码Api GoLang/Mux语法问题:如果ID,Ok=Mux.Vars(r)[“ID”]!好啊,api,go,mux,Api,Go,Mux,我对Golang非常陌生,我正在阅读某人使用gorilla/mux的API代码,我遇到了这段代码 func heroGet(w http.ResponseWriter, r *http.Request) { var ID string var Ok bool if ID, Ok = mux.Vars(r)["ID"]; !Ok{ //do something } 我很难理解Ok在这种特定情况下以及在什么时候做什么!正常将触发 请注意,此函数是GE
func heroGet(w http.ResponseWriter, r *http.Request) {
var ID string
var Ok bool
if ID, Ok = mux.Vars(r)["ID"]; !Ok{
//do something
}
我很难理解Ok在这种特定情况下以及在什么时候做什么!正常将触发
请注意,此函数是GET
endpoint
(
r.HandleFunc(“/hero/{ID}”,heroGet).Methods(“GET”)
)我假设您使用的是goriila mux。我在上进行了检查,mux.Vars()
返回一个类型为map[string]string
的值
简而言之,map
数据类型可以选择返回两个值
vars:=map[string]string{
“一”:“一”,
“二”:“二”,
}
值1,ok1:=变量[“一”]
fmt.Println(“值:”,值1,“存在:”,ok1)
//值:1是否存在:true
值2,ok2:=变量[“两”]
fmt.Println(“值:”,值2,“存在:”,ok2)
//值:is exists:true
值3,ok3:=变量[“三”]
fmt.Println(“值:”,值3,“存在:”,ok3)
//值:is exists:false
从上面的例子中我们可以清楚地看到,如果请求的项目不存在,那么第二次返回将是false
如果即使值为零值,该项仍然存在,则第二次返回仍将是
true
,因为该项确实存在,其值不一定重要。调用mux.Vars(r)
返回一个映射,[“ID”]
尝试使用键“ID”
从映射中检索值。在Go中索引到映射可以选择性地返回两个值,(1)映射到提供键的值,(2)指示值是否实际映射到键的布尔值。。。。然后!当映射不包含ID
键值时,将触发Ok
。