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])
    	}
  • 相关阅读:
    (1)、Bash的基本功能
    (3)、shell运算符与正则表达式
    中小规模集群搭建之backup服务(rsync守护进程)
    中小规模集群搭建(拓扑)
    asp.net 后台弹出JS提示框或执行JS方法
    MYSQL外键(Foreign Key)的使用
    直接双击页面元素进行修改的HTML代码
    [原创]Centos7 从零编译配置Memcached
    在XHTML中使用Media Player播放媒体文件
    JQuery插件右键菜单
  • 原文地址:https://www.cnblogs.com/staff/p/13220911.html
Copyright © 2011-2022 走看看