> Как реализовать коллекцию для хранения связи между customerId, accountNumber и статусом ареста счета без использования объектов? (Go)
Уровень: senior · Роль: backend · Категория: Технические вопросы
Компании: Альфа-банк
Стек: Go
> Пример ответа
Для хранения связи между customerId, accountNumber и статусом ареста счета без использования объектов в Go можно использовать вложенные мапы с примитивными типами. Например:
GO// customerId -> accountNumber -> arrestStatus (bool)var arrests map[string]map[string]bool// Инициализацияarrests = make(map[string]map[string]bool)// Добавление данныхcustomerID := "cust_123"accountNumber := "acc_456"arrestStatus := trueif arrests[customerID] == nil {arrests[customerID] = make(map[string]bool)}arrests[customerID][accountNumber] = arrestStatus// Проверка статусаstatus, exists := arrests[customerID][accountNumber]if exists {fmt.Printf("Арест счета %s для клиента %s: %v\n", accountNumber, customerID, status)}
Такой подход использует только встроенные типы (строки и булевы значения) без пользовательских структур. Для повышения производительности при большом количестве записей можно рассмотреть использование sync.Map для конкурентного доступа. Если требуется более строгая типизация, можно определить константы для статусов:
GOconst (ArrestActive = "active"ArrestInactive = "inactive")var arrests map[string]map[string]string
Этот метод эффективен, прост в реализации и не требует создания объектов, соответствуя условиям задачи.
> Похожие задачи по backend
Как следить за работой оркестратора и какие метрики использовать для проверки корректности
Как задаются стратегии для каждого платежа: через API или иначе
Работаете ли вы с Python и Go
Какие категории и типы данных существуют
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью