Если есть какая-то определённая директория, в которой лежат конфиги (допустим
/config/config.json), то самым простым и прямолинейным способом, без всяких зависимостей и ухищрений, будет создать в самой директории файл
/config/config.go, который будет предоставлять простенький пакет
config, и задачей которого будет тупо загружать конфиг из файла в своей директории в структурку с конфигом. И в остальных пакетах будете просто импортировать этот пакет и получать готовые данные.
Или вот так
package main
import (
"encoding/json"
"fmt"
"log"
"os"
"path/filepath"
)
type Config struct {
Env string `json:"env"`
}
func main() {
// Получаем текущую директорию
currentDir, err := os.Getwd()
if err != nil {
panic(err)
}
// Получаем путь к файлу относительно текущей директории
filePath := filepath.Join(currentDir, "config/config.json")
file, err := os.ReadFile(filePath)
if err != nil {
log.Fatal(err)
}
var config Config
json.Unmarshal(file, &config)
fmt.Println(fmt.Sprintf("ENV: %s", config.Env))
}