> Как реализовать коллекцию для хранения связи между 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 := true
if 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 для конкурентного доступа. Если требуется более строгая типизация, можно определить константы для статусов:

GO
const (
ArrestActive = "active"
ArrestInactive = "inactive"
)
var arrests map[string]map[string]string

Этот метод эффективен, прост в реализации и не требует создания объектов, соответствуя условиям задачи.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью