最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Golang 使用Map實現(xiàn)去重與set的功能操作

 更新時間:2021年04月29日 14:45:35   作者:潘廣宇 Leo  
這篇文章主要介紹了Golang 使用 Map 實現(xiàn)去重與 set 的功能操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

假設現(xiàn)在有一個需求

將以下 url 保存起來,要求不重復

www.baidu.com
www.sina.com.cn
www.hao123.com
www.baidu.com
www.hao123.com

可以利用 map 的 key 唯一性的問題處理

package main 
var set = map[string]bool { 
}
 
func main() {
    ...
    url := xxx
    if set[url] {
        // 表示集合中已經存在
        return
    }
 
    set[url] = true           // 否則如果不存在,設置為true
}
 

// 完成后,set的所有的key值為不重復的值

在此之前,需要確定 golang 支持的 map 的 key 數(shù)量

可以手寫暴力寫入測試

package main 
import (
 "fmt"
)
 
var test = map[int]int { 
}
 
func main() {
 for i := 0; i < 10000000; i++ {        // 測試對1000萬key的支持,完美支持
  fmt.Println(i)
  test[i] = i
 }
}
 

補充:golang map/set類型

map類型

1. 基礎特性

map是一種無序的鍵值對的集合; 所以可以類似數(shù)組/slice一樣進行迭代

map的值可以使內建類型, 也可以是struct類型

內部使用hash表實現(xiàn), map的hash表包含了一個collection of buckets(桶集合)

2. 聲明與初始化

package main
import (
    "fmt"
)
// map[keyType]valueType
func initMap() {
    // 通過make方法創(chuàng)建
    dict := make(map[string]int)
    dict["age"] = 18
    // 直接創(chuàng)建
    dict2 := map[string]string{"name":"xiaoming", "phone":"135xxx"}
    dict2["addr"] = "Guangzhou"
    fmt.Printf("%v\n", dict2)
}
func main() {
    initMap()
}

3. 元素訪問

package main
import (
    "fmt"
)
type Student struct {
    name string
    grade int
}
func useMap() {
    //使用前應該先初始化, 否則panic報錯
    // var map1 map[string]string
    // map1["a"] = "b" // will panic
    map1 := make(map[string]Student)
    map1["s1"] = Student{name:"xiaomo", grade:1}
    fmt.Printf("%v\n", map1)
}
func main() {
    useMap()
}

4. 在函數(shù)中傳遞map

在函數(shù)間傳遞map對象, 是傳遞引用而不是拷貝; 因此在函數(shù)中對map進行了修改, 引用到它的地方也會相應修改

package main
import (
    "fmt"
)
type Student struct {
    name string
    grade int
}
func useMap() {
    map1 := make(map[string]Student)
    map1["s1"] = Student{name:"xiaomo", grade:1}
    // 作為函數(shù)參數(shù)傳遞
    printMap(map1)
}
func printMap(m map[string]Student) {
    fmt.Printf("currentMap: %v\n", m)
}
func main() {
    useMap()
}

Set類型

golang沒有內置Set類型, 可以自定義實現(xiàn)。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關文章

  • Go單元測試工具gomonkey的使用

    Go單元測試工具gomonkey的使用

    本文主要介紹了Go單元測試工具gomonkey的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • 詳解Go語言Sync.Pool為何不加鎖也能夠實現(xiàn)線程安全

    詳解Go語言Sync.Pool為何不加鎖也能夠實現(xiàn)線程安全

    在這篇文章中,我們將剖析sync.Pool內部實現(xiàn)中,介紹了sync.Pool比較巧妙的內部設計思路以及其實現(xiàn)方式。在這個過程中,也間接介紹了為何不加鎖也能夠實現(xiàn)線程安全,感興趣的可以學習一下
    2023-04-04
  • Go語言測試庫testify使用學習

    Go語言測試庫testify使用學習

    這篇文章主要為大家介紹了Go語言測試庫testify的使用學習示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • go-zero數(shù)據的流處理利器fx使用詳解

    go-zero數(shù)據的流處理利器fx使用詳解

    這篇文章主要為大家介紹了go-zero數(shù)據的流處理利器fx使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • Gorm存在時更新,不存在時創(chuàng)建的問題

    Gorm存在時更新,不存在時創(chuàng)建的問題

    這篇文章主要介紹了Gorm存在時更新,不存在時創(chuàng)建的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 解決golang時間字符串轉time.Time的坑

    解決golang時間字符串轉time.Time的坑

    這篇文章主要介紹了解決golang時間字符串轉time.Time的坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • golang使用正則表達式解析網頁

    golang使用正則表達式解析網頁

    這篇文章主要介紹了golang使用正則表達式解析網頁,需要的朋友可以參考下
    2015-03-03
  • golang中的defer函數(shù)理解

    golang中的defer函數(shù)理解

    defer是Go語言中的延遲執(zhí)行語句,用來添加函數(shù)結束時執(zhí)行的代碼,常用于釋放某些已分配的資源、關閉數(shù)據庫連接、斷開socket連接、解鎖一個加鎖的資源,這篇文章主要介紹了golang中的defer函數(shù)理解,需要的朋友可以參考下
    2022-10-10
  • Go開發(fā)go-optioner工具實現(xiàn)輕松生成函數(shù)選項模式代碼

    Go開發(fā)go-optioner工具實現(xiàn)輕松生成函數(shù)選項模式代碼

    go-optioner?是一個在?Go?代碼中生成函數(shù)選項模式代碼的工具,可以根據給定的結構定義自動生成相應的選項代碼,下面就來聊聊go-optioner是如何使用的吧
    2023-07-07
  • 淺析Go語言中數(shù)組的這些細節(jié)

    淺析Go語言中數(shù)組的這些細節(jié)

    這篇文章主要為大家詳細介紹了Go語言中數(shù)組一些細節(jié)的相關資料,文中的示例代碼講解詳細,對我們學習Go語言有一定的幫助,需要的可以了解一下
    2022-11-11

最新評論

安庆市| 岳普湖县| 申扎县| 石阡县| 武鸣县| 突泉县| 平远县| 综艺| 龙井市| 衡山县| 棋牌| 方山县| 宁波市| 河间市| 龙泉市| 新化县| 荔浦县| 兴文县| 宣威市| 红原县| 益阳市| 湘乡市| 光泽县| 永宁县| 开远市| 达州市| 驻马店市| 商河县| 金湖县| 四子王旗| 长阳| 陵水| 镇坪县| 高州市| 商丘市| 昔阳县| 永寿县| 济南市| 临猗县| 黑龙江省| 汝州市|