在Go中是否有与PHP的isset()类似的函数?

时间:2016-07-28 08:29:26

标签: go

在http请求中,我想知道请求是否包含特定参数,类似于PHP的isset函数。如何在Go中测试?感谢。

2 个答案:

答案 0 :(得分:6)

解析完请求后,您始终可以检查参数的值类型是否等于该类型的零值。

例如,您可以使用“逗号,确定”惯用法来检查查询参数:

u, err := url.Parse("http://google.com/search?q=term")
if err != nil {
    log.Fatal(err)
}
q := u.Query()
if _, ok := q["q"]; ok {
    // process q
}

答案 1 :(得分:1)

同样的问题发布在Google网上论坛上,这就是那里的解决方案:

func PrintUser(w http.ResponseWriter, r *http.Request) {
        user := r.FormValue("user")

        pass := r.FormValue("pass")

        if user == "" || pass == "" {
                fmt.Fprintf(w, "Missing username or password")
                return
        }
        fmt.Fprintf(w, "Hi %s!", user) //I doubt you want to print the password.
}

source