Перейти к содержимому

## Условие

go · basicsMagnit / Магнит - 2 (E-com)1 кв 2025не решено
  • Провести ревью кода;
  • Рассказать какие проблемы имеются в данном коде;
  • Внести правки по каждой из найденных проблем.
type Account struct{
UserId int64
Balance float64
}
type Transaction struct{
From int64
To int64
Amount float64
}
type AccountRepository struct{
// Здесь набор методов для работы с аккаунтом пользователя
}
type MessageBroker struct{
// Здесь набор методов для работы с брокером сообщений
}
type TranscationService struct{
accountRepository AccountRepository
messageBroker MessageBroker
}
func(t*TranscationService) MakeTransaction(fromUser, toUser int64, amount float64) error{
sourceAccount:=t.accountRepository.Get("SELECT * FROM account WHERE id = "+strconv.Itoa(fromUser))
destinationAccount:=t.accountRepository.Get("SELECT * FROM account WHERE id = "strconv.Itoa(toUser))
if sourceAccount.Balance>=amount{
t.accountRepository.saveAccount(Account{
UserId: fromUser,
Balance: sourceAccount.Balance-amount
})
t.accountRepository.saveAccount(Account{
UserId: toUser,
Balance: destinationAccount.Balance-amount
})
t.messageBroker.Send(Transaction{
From: fromUser,
To: toUser,
Amount: amount
})
return nil
} else{
return errors.New("some error ")
}
}

Источник: Magnit / Магнит - 2 (E-com) · 1 кв 2025

← Что выведет этот код? · Все задачи · Go · Какое поведение у кода ниже? →