gpt4 book ai didi

api - GoLang/Mux 语法问题 : if ID, Ok = mux.Vars(r) ["ID"]; !行

转载 作者:数据小太阳 更新时间:2023-10-29 03:33:49 25 4
gpt4 key购买 nike

我是 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 在这种特定情况下的作用以及何时触发 !Ok

请注意,此函数是 GET 端点。

(r.HandleFunc("/hero/{ID}", heroGet).Methods("GET"))

最佳答案

我假设您使用的是 goriila mux。我检查了 source code , mux.Vars()返回类型为 map[string]string 的值.

简而言之,map数据类型可以选择返回两个值。

  1. 第一个是根据请求的键的实际值
  2. 第二个是指示是否存在具有请求键的项目( bool 值)。

请看下面的例子:

vars := map[string]string{
"one": "1",
"two": "",
}

value1, ok1 := vars["one"]
fmt.Println("value:", value1, "is exists:", ok1)
// value: 1 is exists: true

value2, ok2 := vars["two"]
fmt.Println("value:", value2, "is exists:", ok2)
// value: is exists: true

value3, ok3 := vars["three"]
fmt.Println("value:", value3, "is exists:", ok3)
// value: is exists: false

从上面的例子中我们可以清楚地看到,如果请求的项目不存在,那么第二次返回将是false。 .

如果该项目存在,即使值为零值,那么第二次返回仍将是 true , 因为该项目确实存在,所以值(value)是多少并不一定重要。

关于api - GoLang/Mux 语法问题 : if ID, Ok = mux.Vars(r) ["ID"]; !行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56800387/

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