go struct{}的幾種特殊用法


參考: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{}{}地址相等

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM