package config import ( "log" "github.com/kelseyhightower/envconfig" ) type smtpConfig struct { Port int `envconfig:"SMTP_PORT"` Host string `envconfig:"SMTP_HOST"` Sender string `envconfig:"SMTP_SENDER"` Password string `envconfig:"SMTP_PASSWORD"` } // type telegramConfig struct { // ChatID int64 `envconfig:"CHAT_ID"` // ChatToken string `envconfig:"CHAT_TOKEN"` // } type kafkaConfig struct { Port int `envconfig:"KAFKA_PORT"` Host string `envconfig:"KAFKA_HOST"` } // ... type Config struct { Smtp smtpConfig Kafka kafkaConfig // Telegram telegramConfig } func NewConfig() *Config { c := Config{} err := envconfig.Process("", &c) if err != nil { log.Fatal(err.Error()) } return &c }