現在GoでRediStoreというOSSを使用しています。そのインスタンスである*RediStoreをグローバル変数としてmain関数内で以下のとおり初期化しました。
go
1///main関数ない 2///var store *rediStore.RediStore//グローバル変数として宣言 3 store, err = redistore.NewRediStore(20, "tcp", ":6379", "", []byte("session-key")) 4 5 if store == nil { 6 //ここはnilでない 7 panic("store is nil") 8 } 9 if err != nil { 10 //エラーもない 11 panic(err) 12 } 13 defer store.Close() 14 store.SetMaxAge(259200)
そして、user_handlerというhandler内でGetSessionを呼び出すことで下記の通りそのインスタンスを参照しました。しかし、ここで参照したstoreがnilになってしまいます。main関数内でエラーがでていないので初期化は完了しているはずだと考えたのですがなぜでしょうか
go
1func GetSession(c *echo.Context) *sessions.Session { 2 if c.Request() == nil { 3 panic("c is nil") 4 } 5 if store == nil { 6 //nilになっている 7 panic("store is nil") 8 } 9 session, err := store.Get(c.Request(), KeySession) 10 if err != nil { 11 panic(err) 12 } 13 return session 14}
エラーは以下のようなものがでました。
invalid memory address or nil pointer dereference
これは自分でデバッグ用のコードを入れる前のエラーです。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。