golang中set數(shù)據結構的使用示例
更新時間:2023年03月08日 14:59:30 作者:Pecto
本文主要介紹了golang中set數(shù)據結構的使用示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
借助map實現(xiàn)
golang中沒有set數(shù)據結構,一般是通過map實現(xiàn),因為map的key值是不能重復的
示例
type empty struct {
}
// golang中的set數(shù)據類型
func MakeGolangSet(){
?? ?// 首先,空結構體內存消耗為0,其它數(shù)據結構如布爾值等均存在內存消耗
?? ?var e empty
?? ?fmt.Printf("empty struct memory is %v\n", unsafe.Sizeof(e))
?? ?fmt.Printf("bool memory is %v\n", unsafe.Sizeof(false))
?? ?set := make(map[string]struct{})
?? ?// ADD
?? ?set["foo"] = e
?? ?// DELETE
?? ?delete(set, "foo")
?? ?// set的規(guī)模
?? ?size := len(set)
?? ?fmt.Printf("set size is %v\n", size)
?? ?// 判斷是否存在
?? ?set["foo"] = e
?? ?value, exist := set["foo"]
?? ?fmt.Printf("value is %v\n, exist is %v\n", value, exist)
}算法應用
找兩個數(shù)組的交集
// 兩個數(shù)組的交集
func SectionWithTwoArray(num1, num2 []int) []int{
?? ?set := make(map[int]struct{}, 0)
?? ?var res []int
?? ?for _, v := range num1 {
?? ??? ?if _, ok := set[v]; !ok {
?? ??? ??? ?// 去重
?? ??? ??? ?set[v] = struct{}{}
?? ??? ?}
?? ?}
?? ?for _, v := range num2 {
?? ??? ?if _, ok := set[v]; ok {
?? ??? ??? ?res = append(res, v)
?? ??? ??? ?// 將此v刪掉,避免結果中出現(xiàn)重復數(shù)據
?? ??? ??? ?delete(set, v)
?? ??? ?}
?? ?}
?? ?return res
}到此這篇關于golang中set數(shù)據結構的使用示例的文章就介紹到這了,更多相關golang set數(shù)據結構內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Go語言切片前或中間插入項與內置copy()函數(shù)詳解
這篇文章主要介紹了Go語言切片前或中間插入項與內置copy()函數(shù)詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04
Golang動態(tài)數(shù)組的實現(xiàn)示例
動態(tài)數(shù)組能自動調整大小,與靜態(tài)數(shù)組不同,其大小不固定,可根據需求變化,實現(xiàn)通常依賴于數(shù)據結構如鏈表或數(shù)組加額外信息,本文就來介紹一下Golang動態(tài)數(shù)組的實現(xiàn)示例,感興趣的可以了解一下2024-10-10
Bililive-go 實現(xiàn)直播自動監(jiān)控錄制功能
最近有直播錄制的需求,但是自己手動錄制太麻煩繁瑣,于是用了開源項目Bililive-go進行全自動監(jiān)控錄制,對Bililive-go 直播自動監(jiān)控錄制實現(xiàn)思路感興趣的朋友,一起看看吧2024-03-03

