在gorilla/sessions存在以下代碼:
func (s *CookieStore) New(r *http.Request, name string) (*Session, error) {
session := NewSession(s, name)
opts := *s.Options
session.Options = &opts
...
哪里s.Options是型別*sessions.Options:
type CookieStore struct {
...
Options *Options // default configuration
}
并且sessios.Session.Options也是型別*sessions.Options:
type Session struct {
...
Options *Options
...
}
我的問題是,取消參考s.Options然后將其參考分配給 有session.Options什么意義?為什么不這樣做:
func (s *CookieStore) New(r *http.Request, name string) (*Session, error) {
session := NewSession(s, name)
session.Options = s.Options
...
這是為了確保將解除參考的值s.Options復制到session.Options,而不是實際參考,從而避免兩個物件指向同一事物?
uj5u.com熱心網友回復:
是為了防止兩個指標指向同一個位置。
session := NewSession(s, name)
opts := *s.Options
此時,opts包含s.Options. 然后:
session.Options = &opts
這將設定session.Options為一個與 不同的選項物件s.Options,但其內容是從 初始化的s.Options。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/358294.html
