История изменений
Исправление derlafff, (текущая версия) :
Не согласен, везде где принципиально важно - проверки есть.
Вот к примеру у тебя эмуляция дефолтного конфига.
func GetConfig() Config {
var config = Config{Host: "", Port: "8080", Secret: "lol"}
file, err := os.Open("./config.json")
defer file.Close()
if err == nil {
log.Println(json.NewDecoder(file).Decode(&config))
}
return config
}
Что тут не так:
- Нет корректной проверки, все ли хорошо с файлом. Может быть, он не открывается, потому что на него нет прав?
- Конфиг может быть открыт, но декодирован неуспешно.
Немного более корректная реализация:
func GetConfig() (*Config, error) {
var config = Config{
Host: "",
Port: "8080",
Secret: "lol",
}
file, err := os.Open("config.json")
defer file.Close()
if err != nil && !os.IsNotExist(err) {
return nil, err
}
err = json.NewDecoder(file).Decode(&config)
if err != nil {
return nil, err
}
return &config, nil
}
Исправление derlafff, :
Не согласен, везде где принципиально важно - проверки есть.
Вот к примеру у тебя эмуляция конфига.
func GetConfig() Config {
var config = Config{Host: "", Port: "8080", Secret: "lol"}
file, err := os.Open("./config.json")
defer file.Close()
if err == nil {
log.Println(json.NewDecoder(file).Decode(&config))
}
return config
}
Что тут не так:
- Нет корректной проверки, все ли хорошо с файлом. Может быть, он не открывается, потому что на него нет прав?
- Конфиг может быть открыт, но декодирован неуспешно.
Немного более корректная реализация:
func GetConfig() (*Config, error) {
var config = Config{
Host: "",
Port: "8080",
Secret: "lol",
}
file, err := os.Open("config.json")
defer file.Close()
if err != nil && !os.IsNotExist(err) {
return nil, err
}
err = json.NewDecoder(file).Decode(&config)
if err != nil {
return nil, err
}
return &config, nil
}
Исправление derlafff, :
Не согласен, везде где принципиально важно - проверки есть.
Вот к примеру у тебя эмуляция конфига.
func GetConfig() Config {
var config = Config{Host: "", Port: "8080", Secret: "lol"}
file, err := os.Open("./config.json")
defer file.Close()
if err == nil {
log.Println(json.NewDecoder(file).Decode(&config))
}
return config
}
Что тут не так:
[list][*]Нет корректной проверки, все ли хорошо с файлом. Может быть, он не открывается, потому что на него нет прав? [*]Конфиг может быть открыт, но декодирован неуспешно. [/list]
Немного более корректная реализация:
func GetConfig() (*Config, error) {
var config = Config{
Host: "",
Port: "8080",
Secret: "lol",
}
file, err := os.Open("config.json")
defer file.Close()
if err != nil && !os.IsNotExist(err) {
return nil, err
}
err = json.NewDecoder(file).Decode(&config)
if err != nil {
return nil, err
}
return &config, nil
}
Исходная версия derlafff, :
Не согласен, везде где принципиально важно - проверки есть.
Вот к примеру у тебя эмуляция конфига.
var config = Config{Host: "", Port: "8080", Secret: "lol"}
file, err := os.Open("./config.json")
defer file.Close()
if err == nil {
log.Println(json.NewDecoder(file).Decode(&config))
}
return config
}```
Что тут не так:
[list][*]Нет корректной проверки, все ли хорошо с файлом. Может быть, он не открывается, потому что на него нет прав?
[*]Конфиг может быть открыт, но декодирован неуспешно.
[/list]
Немного более корректная реализация:
```func GetConfig() (*Config, error) {
var config = Config{
Host: "",
Port: "8080",
Secret: "lol",
}
file, err := os.Open("config.json")
defer file.Close()
if err != nil && !os.IsNotExist(err) {
return nil, err
}
err = json.NewDecoder(file).Decode(&config)
if err != nil {
return nil, err
}
return &config, nil
}