Я пытаюсь поменять указатель на структуру в Go, запустив функцию, которая к нему привязана:
func ( config *Config ) ReLoadConfigFile( configPath string ) error {
if ( len( configPath ) > 0 ) {
newConfig := Config{};
err := newConfig.LoadFromFile( configPath );
//Swap the configs, ensuring to lock the config for the swap
if ( err == nil ) {
config.Lock.Lock( );
defer config.Lock.Unlock( );
config = &newConfig;
} else {
errorString := "Unable To Reload Config At Path: " + configPath;
return fmt.Errorf( errorString );
}
} else {
return fmt.Errorf( "No Config Given To Reload" );
}
return nil;
}
Я добавил несколько отпечатков, как внутри этой функции для config и newConfig, так и для одного и того же указателя вне функции, однако не похоже, что замена указателя работает правильно, так как config и печать вне функция все еще печатает предыдущую версию, а не newConfig, насколько я понимаю, я тоже меняю указатель.
Я довольно новичок в Go, просто чтобы убедиться, что я не схожу с ума. Я воссоздаю то же самое в Cpp, и это работает:
int *Temp1 = NULL;
int Temp2 = 123456;
Temp1 = &Temp2;
Где это сделает Temp1 значением 123456 (данные Temp2). Может кто-нибудь, пожалуйста, дайте мне знать, где я иду не так в моем коде Go?
Спасибо!