Junior — Senior
50
Какой вывод получит программа №35
Компании, где спрашивали:
Условие задачи
Определите, какой текст будет напечатан в консоли после выполнения программы. Укажите, присутствуют ли в коде ошибки.
import java.net.IDN;
type OrderSrv struct {
FlightSrv BookingService
AccountSrv UserService
}
type UserService interface {
LockUser(User) error
UnlockUser(User) error
}
type User struct {
ID string
}
type Receipt struct {
ID string
BookingCode string
BookedAt string
}
type BookingService interface {
BookFlight() (string, *BookingSrvError)
}
type BookingSrvError struct {
error
TryAgain bool
}
func (s *OrderSrv) HandleBookingOrder(user User) *Receipt {
receiptInfo := Receipt{ID: uuid.New().String()}
if err := s.AccountSrv.LockUser(user); err != nil {
log.Logger.Err(err)
return nil
}
for {
flightCode, err := s.FlightSrv.BookFlight()
switch {
case err == nil:
receiptInfo.BookedAt = time.Now().Format(time.RFC3339)
receiptInfo.BookingCode = flightCode
return &receiptInfo
case err.TryAgain:
default:
log.Logger.Err(err)
break
}
}
if err := s.AccountSrv.UnlockUser(user); err != nil {
log.Logger.Err(err)
return nil
}
return &receiptInfo
}