package main import ( "os" "gopkg.in/yaml.v3" ) // Config 应用程序配置结构 type Config struct { RestAddr string `yaml:"rest_addr"` WsAddr string `yaml:"ws_addr"` MetricsAddr string `yaml:"metrics_addr"` NATSURL string `yaml:"nats_url"` PersistenceType string `yaml:"persistence_type"` PersistenceDir string `yaml:"persistence_dir"` SyncEvery int `yaml:"sync_every"` } func LoadConfig(path string) (*Config, error) { file, err := os.Open(path) if err != nil { return nil, err } defer file.Close() var config Config decoder := yaml.NewDecoder(file) if err := decoder.Decode(&config); err != nil { return nil, err } return &config, nil } func GenerateSampleConfig(path string) error { config := Config{ MetricsAddr: ":8082", NATSURL: "nats://localhost:4222", PersistenceDir: "./data", PersistenceType: "memory", RestAddr: ":8080", SyncEvery: 1000, WsAddr: ":8081", } // 序列化yaml到path file, err := os.Create(path) if err != nil { return err } defer file.Close() return yaml.NewEncoder(file).Encode(config) }