2010-11-27 109 views
2

转到std::set会怎样?请注意,只有唯一性很重要,我不关心订购。相当于std :: set吗?

我已经考虑过使用虚拟类型,例如map[string]bool(其中bool是虚拟的),但是我经常在Go中找到我需要提供一种不需要的类型,比如用作信号量的通道,和这种情况。我是否错过了Go的一些惯用语?

回答

3

使用带有虚拟值的映射作为集合在像Perl这样的没有集合的语言中是很常见的做法。我认为这是一个可以接受的方式来获取集合,除非你想自己实现它或使用一些第三方实现。当然,你的数据类型必须是允许作为映射关键字的数据类型,即不是结构体,数组或切片。

1

使用map[string]bool非常好。

也有一些更看中库来处理组,例如参见:https://github.com/pwil3058/gosets

但我仍然会用一个简单的图贴,它是更地道,更简单,这是一件好事。