未定义 return 在 Go 中输入

Undefined return type in Go

我是 Go 的新手,在处理使用 mux-gorilla sessions/cookies 的代码片段时遇到了问题。我想通过以下功能减少很多冗余:

func isLoggedIn(w http.ResponseWriter, r *http.Request) (bool, *Session) {
    session, err := store.Get(r, "user")
    var logged bool = true
    if err != nil { // Need to delete the cookie.
        expired := &http.Cookie{Path: "/", Name: "user", MaxAge: -1, Expires: time.Now().Add(-100 * time.Hour)}
        http.SetCookie(w, expired)
        logged := false
    }
    return logged, session
}

不幸的是我得到以下编译错误:undefined: Session

如果store.Get函数可以返回,这个类型怎么会是undefined呢?请注意,商店之前使用 "gorilla/sessions" 包声明为 store = sessions.NewCookieStore([]byte(secret))

Go 需要知道在 Session 中找到哪个包:sessions.Session.

错误在你的函数签名上isLoggedIn

因此您修改后的代码为:

import "github.com/gorilla/sessions"
func isLoggedIn(w http.ResponseWriter, r *http.Request) (bool, *sessions.Session) {
  ...
}