未定义 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) {
...
}
我是 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) {
...
}