Идти эквивалентно std :: set? - PullRequest
2 голосов
/ 27 ноября 2010

Что будет эквивалентно в Go для std::set?Обратите внимание, что важна только уникальность, я не забочусь о порядке.

Я рассмотрел использование фиктивного типа, такого как map[string]bool (где bool - фиктивный), однако часто я нахожу в GoМне нужно предоставить тип, где он не требуется, например, канал, используемый в качестве семафора, и этот случай.Я скучаю по чему-то идиоматическому Go?

Ответы [ 2 ]

3 голосов
/ 27 ноября 2010

Использование карты с фиктивными значениями в качестве набора является обычной практикой в ​​таких языках, как Perl, у которых нет наборов.Я думаю, что это приемлемый способ получить наборы в Go, если вы не хотите реализовать его самостоятельно или использовать стороннюю реализацию.Конечно, ваш тип данных должен быть тем, который разрешен в качестве ключа на карте, т. Е. Не структура, массив или фрагмент.

1 голос
/ 08 декабря 2010

Использование map[string]bool прекрасно.

Есть также еще несколько модных библиотек для обработки множеств, см., Например: https://github.com/pwil3058/gosets

Но я бы все равно придерживался простой карты, она более идиоматична и проще, что всегда хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...