昨天把beego从1.6.1升级到了1.7的版本,结果运行报错指明session的设置指明是session初始化时由于类型问题出错。
```golang
func init() {
globalSessions, _ = session.NewManager("memory", `{"cookieName":"gosessionid", "enableSetCookie,omitempty": true, "gclifetime":3600, "maxLifetime": 3600, "secure": false, "sessionIDHashFunc": "sha1", "sessionIDHashKey": "", "cookieLifeTime": 3600, "providerConfig": ""}`)
go globalSessions.GC()
}
```
这是以前beego文档里提供的session方法用来初始化数据,但是将beego1.6.1升级到1.7版本后,session这里会报错,ManagerConfig的类型不能在用这样的格式传递。于是去查beego/session的文档,发现NewManager的方法的第一个参数还是string类型,第二个参数变成了*ManagerConfig类型,是一个指针类型。再去看ManagerConfig是一个结构体
```golang
type ManagerConfig struct {
CookieName string `json:"cookieName"`
EnableSetCookie bool `json:"enableSetCookie,omitempty"`
Gclifetime int64 `json:"gclifetime"`
Maxlifetime int64 `json:"maxLifetime"`
Secure bool `json:"secure"`
CookieLifeTime int `json:"cookieLifeTime"`
ProviderConfig string `json:"providerConfig"`
Domain string `json:"domain"`
SessionIDLength int64 `json:"sessionIDLength"`
EnableSidInHttpHeader bool `json:"enableSidInHttpHeader"`
SessionNameInHttpHeader string `json:"sessionNameInHttpHeader"`
EnableSidInUrlQuery bool `json:"enableSidInUrlQuery"`
}
```
于是可以这样来写
```golang
func init() {
var structdata session.ManagerConfig
structdata.CookieName = "gosessionid"
structdata.EnableSetCookie = true
structdata.Gclifetime = 3600
structdata.Maxlifetime = 3600
structdata.Secure = false
structdata.CookieLifeTime = 3600
structdata.ProviderConfig = ""
globalSessions, _ = session.NewManager("memory", &structdata)
go globalSessions.GC()
}
```