Удаление повторяющихся элементов из фрагмента
Данный текстовый файл содержит список одноранговых узлов, представленных в виде объектов с «Адрес» и «PeerID» атрибуты, задача состоит в том, чтобы удалить все дубликаты одноранговых узлов на основе совпадения «Адрес» и «PeerID» из фрагмента «Bootstrap» в коде. Configuration.
Для достижения этого мы перебираем каждый одноранговый объект в срезе несколько раз. Во время каждой итерации мы сравниваем его «PeerID» и «Адрес» со значениями, предоставленными пользователем. Если совпадение найдено, мы удаляем этот конкретный объект из среза. Этот процесс гарантирует удаление всех экземпляров однорангового узла.
Однако следует учитывать крайний случай. Если последний одноранговый узел в срезе «Bootstrap» является дубликатом, код паникует с ошибкой «Границы среза выходят за пределы диапазона». Чтобы решить эту проблему, мы можем реализовать более надежное решение, которое копирует несовпадающие значения в начало среза и обрезает лишнее после завершения итерации.
Вот обновленный код:
i := 0 for _, v := range cfg.Bootstrap { if v.PeerId == peer.PeerId && v.Address == peer.Address { continue } cfg.Bootstrap[i] = v i } cfg.Bootstrap = cfg.Bootstrap[:i]
Этот код перебирает фрагмент «Bootstrap». Для каждого однорангового объекта он сравнивает его «PeerID» и «Адрес» со значениями, предоставленными пользователем. Если партнер не является дубликатом, он копируется в начало среза с индексом «i». Затем индекс «i» увеличивается, чтобы указать на следующую доступную позицию.
После завершения итерации срез «Bootstrap» обрезается, чтобы удалить все лишние элементы, эффективно удаляя все повторяющиеся одноранговые узлы, включая последний. .
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3