package config import ( "fmt" "gopkg.in/yaml.v3" "os" ) type DB struct { Host string `yaml:"host"` User string `yaml:"user"` Password string `yaml:"password"` Port string `yaml:"port"` Database string `yaml:"database"` } type Config struct { Port int `yaml:"port"` Db DB `yaml:"db"` LogFile string `yaml:"logFile"` } func LoadConfig(defaultConfig string, defaultPort int) (*Config, error) { data, err := os.ReadFile(defaultConfig) if err != nil { return nil, fmt.Errorf("ошибка чтения файла конфига: %s", err) } var config Config err = yaml.Unmarshal(data, &config) if err != nil { return nil, fmt.Errorf("не получилось распарсить конфиг: %s", err) } return setDefaultValue(&config, defaultPort), nil } func setDefaultValue(config *Config, defaultPort int) *Config { if config.Port == 0 { config.Port = defaultPort } return config }