參考:https://blog.csdn.net/kturing/article/details/80557280
1.聲明為聲明為map[string]struct{}
由於struct{}是空,不關心內容,這樣map便改造為set
map可以通過“comma ok”機制來獲取該key是否存在,例如_, ok := map["key"]
,如果沒有對應的值,ok為false
可以通過定義成map[string]struct{}
的形式,值不再占用內存。其值僅有兩種狀態,有或無
如果定義的是map[string]bool,則結果有true、false或沒有
下面的例子用於查看數組中是否有重復的值,就使用了map[string]struct{}
如果任何值在數組中出現至少兩次,函數返回 true。如果數組中每個元素都不相同,則返回 false。
func containsDuplicate(nums []int) bool { m := make(map[int]struct{}) for _, v := range nums{ _, ok := m[v] if ok { return true } m[v] = struct{}{} } return false }
2.chan struct{}:可以用作通道的退出
3.兩個structt{}{}地址相等