Ошибка указывает на
Could not find file 'C:\XXXX\MLNetExampleA\iris-data.txt'
Вы следовали за [/g0] и подтвердили, что файл действительно скопирован в папку вывода?
Я предлагаю поместить фактические значения конфигурации в поле в структуре Config
, которая мутирует под блокировкой, а не мутировать указатель Config
, потому что при встрече с вызывающими методами метод все равно будет иметь ссылку на старый указатель.
Например:
type Config struct {
values map[string]interface{} // or whatever is appropriate for your config
lock sync.RWMutex
}
func (c *Config) Get(k string) (interface{}, bool) {
c.lock.RLock()
defer c.lock.RUnlock()
v, ok := c.values[k]
return v, ok
}
func (c *Config) Reload(path string) error {
newConfig, err := LoadFromFile(path)
if err != nil {
return err
}
c.lock.Lock()
defer c.lock.Unlock()
c.values = newConfig.values
return nil
}