Go中未定义的返回类型

时间:2016-04-04 22:39:34

标签: go mux

我是Go的新手,我在使用mux-gorilla会话/ Cookie的代码段时遇到了问题。我希望通过以下功能减少许多冗余:

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函数可以返回此类型,那么该类型是如何定义的?请注意,商店之前已声明为store = sessions.NewCookieStore([]byte(secret)),使用" gorilla / sessions"封装

1 个答案:

答案 0 :(得分:2)

Go需要知道在Session中找到sessions.Session的包。

错误在您的func isLoggedIn

的签名上

所以修改后的代码将是:

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