• Go map


    map特点:

    map是无序的基于key-value的数据结构。map是引用类型,其内部使用散列表(hash)实现

    必须初始化才能使用

    map操作:

        var m1 map[string]int         //声明:key为string类型,值为int类型
        m1 = make(map[string]int, 10) //初始化:必须要初始化才能用.并且要预估容量,避免在运行中动态扩容
        //存值
        m1["a"] = 1
        m1["b"] = 2
        //取值
        value, ok := m1['c']      //如果取一个不存在的值:value=对应类型的零值, ok=false
        遍历
        for k, v := range m1 {
            fmt.println(k, v)
        }
        for k := range m1 {
            fmt.println(k)
        }
        for _, v := range m1 {
            fmt.println(v)
        }

        删除
        delete(m1, "a")
        delete(m1, "ff")     //删除不存在的key,不做任何操作

    “元素类型为map的切片”  vs   “值为切片类型的map”

    // 元素类型为map的切片
    var s1 = make([]map[int]string, 0, 10)
    s1[0][100] = "A" //失败。切片长度是0没有对map初始化
    s1[0] = make(map[int]string, 1)

    // 值为切片类型的map
    var m1 = make(map[string][]int, 10)
    m1["bj"] = []int{10,20,30}

    按随机顺序遍历

    	rand.Seed(time.Now().UnixNano()) //初始化随机数种子
    
    	var scoreMap = make(map[string]int, 200)
    
    	for i := 0; i < 100; i++ {
    		key := fmt.Sprintf("stu%02d", i) //生成stu开头的字符串
    		value := rand.Intn(100)          //生成0~99的随机整数
    		scoreMap[key] = value
    	}
    	//取出map中的所有key存入切片keys
    	var keys = make([]string, 0, 200)
    	for key := range scoreMap {
    		keys = append(keys, key)
    	}
    	//对切片进行排序
    	sort.Strings(keys)
    	//按照排序后的key遍历map
    	for _, key := range keys {
    		fmt.Println(key, scoreMap[key])
    	}
  • 相关阅读:
    vim配置
    mongodb的dockercompose.yml
    上三角 css
    简单的散列函数djb2,sdbm,lose lose
    Vscode中前端比较好用的插件
    git rebase
    lineargradient mixin
    Nginx配置BrowserRouter跟随reactrouter
    Qt:no matching function for call to (类名)::connect()的错误原因总结
    Qt pro文件里如何判断系统是32位或64位
  • 原文地址:https://www.cnblogs.com/staff/p/13220911.html
Copyright © 2020-2023  润新知