Problemübersicht:
Dieses Code-Snippet lädt Daten aus Dateien in eine Karte während des Startvorgangs. Es tritt jedoch ein Problem auf, wenn beim Laden der Datei Fehler auftreten. Das Problem entsteht, weil der Code die Karte löscht, bevor jede neue Datei geladen wird, was zu Datenverlust führen kann, wenn ein Fehler auftritt und der vorherige Kartenstatus nicht beibehalten wird.
Vorgeschlagene Lösung:
Um dieses Problem zu lösen, kann ein einfacherer Ansatz gewählt werden:
Implementierung:
<code class="go">type CustomerConfig struct { Data map[string]bool LoadedAt time.Time } func loadConfig() (*CustomerConfig, error) { cfg := &CustomerConfig{ Data: map[string]bool{}, LoadedAt: time.Now(), } // Load files and populate cfg.Data // Return error if encountered return cfg, nil } type ConfigCache struct { configMu sync.RWMutex config *CustomerConfig closeCh chan struct{} } func NewConfigCache() (*ConfigCache, error) { cfg, err := loadConfig() if err != nil { return nil, err } cc := &ConfigCache{ config: cfg, closeCh: make(chan struct{}), } go cc.refresher() return cc, nil } func (cc *ConfigCache) refresher() { ticker := time.NewTicker(1 * time.Minute) defer ticker.Stop() for { select { case <-ticker.C: // Check for changes changes := false // Implement logic to detect changes if !changes { continue } cfg, err := loadConfig() if err != nil { log.Printf("Failed to load config: %v", err) continue } cc.configMu.Lock() cc.config = cfg cc.configMu.Unlock() case <-cc.closeCh: return } } } func (cc *ConfigCache) Stop() { close(cc.closeCh) } func (cc *ConfigCache) GetConfig() *CustomerConfig { cc.configMu.RLock() defer cc.configMu.RUnlock() return cc.config }</code>
Verwendung:
<code class="go">cc, err := NewConfigCache() if err != nil { // Handle error } cfg := cc.GetConfig() // Access the latest configuration</code>
Das obige ist der detaillierte Inhalt vonDer Titel könnte lauten: **Wie gehe ich mit Fehlern beim Laden von Dateien in einer Datenzuordnung um?**. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!