config, err := NewConfig(configFile)
}
парсится и заполняется
но в
func socketHandler(w http.ResponseWriter, r *http.Request) {}
config уже пустой
где косяк с областями видимости?
Лучше переписать код, чтобы там не было глобальных переменных
а почему? если эти данные используются во многих функциях
Чтобы не было проблем с областями видимостями
ок а чисто для развития - в чем может быть косяк?
http.HandleFunc("/ws", socketHandler) как в socketHandler передать config?
Косяк в том, что в config, err := NewConfig(configFile), переменная config - это локальная переменная, а не глобальная
func socketHandler(w http.ResponseWriter, r *http.Request, cfg Config) {} ... cfg, err := NewConfig(configFile) ... http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) { return socketHandler(w, r, cfg) })
То есть, чтобы пофиксить в данном случае надо писать var err error config,err = NewConfig(configFile)
прикольно, спасибо
по uber style имя должно быть _config, глобальные переменные должны выделяться. Хоть там про то, что случайно глобальную переменную перепишете, но ваш кейс тоже подходит. Я бы в линтер внес.
Обсуждают сегодня