在golang中映射[T] struct {}和map [T] bool

tim*_*tee 5 go

有什么不同?是map[T]bool优化map[T]struct{}?Go中最好的做法是什么?

也许最好的理由map[T]struct{}是你不必回答"价值是什么意思"这个问题false

cni*_*tar 8

来自"The Go Programming Language":

没有字段的struct类型称为空结构,写入 struct{}.它的大小为零,没有任何信息,但可能仍然有用.一些Go程序员使用它而不是bool作为表示集合的地图的值类型,以强调只有键是重要的,但节省空间是边缘的,语法更麻烦,所以我们通常避免它.

如果您使用bool"set"中的状态测试稍微好一些,因为您可以说:

if mySet["something"] {
    /* .. */
}
Run Code Online (Sandbox Code Playgroud)