Как предотвратить дублирование заявок при получении двух одинаковых сообщений из Kafka?

Для дедупликации списка адресов в Go удобно использовать map, где ключом будет адрес, а значением — булево значение или пустая структура для экономии памяти.

Короткий ответ

Что ответить на собеседовании

Для дедупликации списка адресов в Go удобно использовать map, где ключом будет адрес, а значением — булево значение или пустая структура для экономии памяти.

Подробный разбор

Ответ с пояснениями

Для дедупликации списка адресов в Go удобно использовать map, где ключом будет адрес, а значением — булево значение или пустая структура для экономии памяти.

Пример:

package main

import "fmt"

func uniqueAddresses(addresses []string) []string {
    seen := make(map[string]struct{})
    var result []string

    for _, addr := range addresses {
        if _, exists := seen[addr]; !exists {
            seen[addr] = struct{}{}
            result = append(result, addr)
        }
    }
    return result
}

func main() {
    addresses := []string{"addr1", "addr2", "addr1", "addr3", "addr2"}
    unique := uniqueAddresses(addresses)
    fmt.Println(unique) // Output: [addr1 addr2 addr3]
}

Здесь map[string]struct{} используется для эффективного хранения уникальных ключей без дополнительного потребления памяти на значение. Итоговый срез содержит только уникальные адреса, что позволяет вызывать их один раз.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку