Session 为什么这个gorilla会话代码不起作用?

Session 为什么这个gorilla会话代码不起作用?,session,go,gorilla,Session,Go,Gorilla,我是golang noob,所以我通过建立一个基于gorilla的web应用程序的种子项目来制作我的第一个玩具应用程序。虽然进行得很顺利,但会话代码并不像我预期的那样工作,下面是相关的代码片段: func getMyCounter(w http.ResponseWriter, r *http.Request){ session, _ := sessionStore.Get(r, counterSession) if session.IsNew { session.

我是golang noob,所以我通过建立一个基于gorilla的web应用程序的种子项目来制作我的第一个玩具应用程序。虽然进行得很顺利,但会话代码并不像我预期的那样工作,下面是相关的代码片段:

func getMyCounter(w http.ResponseWriter, r *http.Request){
    session, _ := sessionStore.Get(r, counterSession)
    if session.IsNew {
        session.Values[myCounter] = 0
    }
    val := session.Values[myCounter].(int)
    log.Printf("getMyCounter %d", val)
    m := make(map[string]int)
    m["counter"] = val
    js, _ := json.Marshal(m)
    w.Header().Set("Content-Type", "application/json")
    w.Write(js)
}

func incrementMyCounter(w http.ResponseWriter, r *http.Request){
    log.Println("incrementMyCounter")
    session, _ := sessionStore.Get(r, counterSession)
    if session.IsNew {
        session.Values[myCounter] = 0
    }
    val := session.Values[myCounter].(int)
    session.Values[myCounter] = val + 1
    getMyCounter(w, r)
}

我对getMyCounter和incrementMyCounter的调用总是返回0

多亏JimB指出了显而易见的痛苦,我需要在创建/编辑会话后添加对
session.Save(r,w)
的调用。

您没有调用
session.Save(r,w)
。。。。这太尴尬了。谢谢:)再补充一点:如果您有任何控制流(例如,您提前返回),您需要调用
session.Save(r,w)
,然后才能:a)离开处理程序和/或b)向ResponseWriter写信。