2016-04-04 11 views
-1

私はかなり新しく、mux-gorillaセッション/クッキーを使用するコードスニペットに問題があります。私は、次の機能を削減したい多くの冗長性があります:未定義の返品タイプGo

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は、 "gorilla/sessions"パッケージを使用してstore = sessions.NewCookieStore([]byte(secret))と以前に宣言されています。

答えて

2

移動先Sessionにあるsessions.Sessionのパッケージを探す必要があります。

誤差はごFUNCの署名にあるisLoggedIn

だからあなたの変更されたコードは次のようになります。だから私は、インポートはまだされていない型を返す機能を持っている場合は

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

...など私は特にそのタイプを使用しない限り、私はとにかく必要はありません? – jhc

+0

私はあなたの質問に明確ではない。 (関数のシグネチャにあるように)型を明示的に指定する場合は、インポートを含める必要があります –

+0

型を明示的に(関数シグネチャなどに)指定しない場合は、インポートなしで戻り値を使用できます。 –