zoukankan      html  css  js  c++  java
  • 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])
    	}
  • 相关阅读:
    AtCoder Grand Contest 015 题解
    AtCoder Grand Contest 014 题解
    AtCoder Grand Contest 013 题解
    AtCoder Grand Contest 012 题解
    AtCoder Grand Contest 011 题解
    AtCoder Grand Contest 010 题解
    AtCoder Grand Contest 009 题解
    NOIP2017 Day2 题解
    博客园主题备份
    多项式全家桶
  • 原文地址:https://www.cnblogs.com/staff/p/13220911.html
Copyright © 2011-2022 走看看