«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу эффективно проверить наличие ключа на нескольких картах Go?

Как я могу эффективно проверить наличие ключа на нескольких картах Go?

Опубликовано 22 декабря 2024 г.
Просматривать:890

How Can I Efficiently Check for Key Existence Across Multiple Go Maps?

Эффективная проверка существования ключа в нескольких картах

В Go принято работать с картами, которые представляют собой эффективные структуры данных для получения ключа -ценные пары. Однако предоставленный разработчиком код демонстрирует необходимость проверки существования ключа в двух отдельных картах. Остается вопрос, можно ли сделать этот процесс более кратким.

Как поясняется в ответе, использование специальной формы v, ok := m[k] в Go для проверки существования ключа ограничивается назначениями одной переменной. . Таким образом, объединение двух проверок в одну, если условие с использованием этой формы, невозможно.

Однако существуют альтернативные подходы для достижения желаемой функциональности:

  1. Назначение кортежа:
    Если тип значения карты является типом интерфейса и вы можете гарантировать, что нулевое значение не используется, вы можете выполнить назначение кортежа, используя два индекса. выражения:

    if v1, v2 := m1["aaa"], m2["aaa"]; v1 != nil && v2 != nil {
        // ...
    }
  2. Вспомогательная функция:
    Вспомогательную функцию можно создать для выполнения проверки существования ключа в обеих картах и ​​возврата результатов:

    func idx(m1, m2 map[string]interface{}, k string) (
        v1, v2 interface{}, ok1, ok2 bool) {
    
        v1, ok1 = m1[k]
        v2, ok2 = m2[k]
        return
    }

    Эту функцию затем можно использовать следующим образом:

    if v1, v2, ok1, ok2 := idx(m1, m2, "aaa"); ok1 && ok2 {
        // ...
    }

Эти подходы позволяют провести краткую и эффективную проверку существования ключа в нескольких сопоставлениях в рамках одного условного оператора.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3