zoukankan      html  css  js  c++  java
  • golang的map[string][]string的技巧

    类似于这种map slice结构,理论上基本都可以这么使用。

    需求

    替换或者修改切片中的数值,直接修改切片就好,不需要重新赋值。前提是不能改变切片大小。

    代码如下:

    import (
        "fmt"
    )
    
    func CheckMaoSlice() {
        //初始化map[string][]string
        funcMap := map[string][]string{
            "1111":  []string{"2222", "333333"},
            "11115": []string{"2ooo222", "33ooo3333"},
        }
        fmt.Println(funcMap)//替换之前的打印
        funcMap1 := map[string]string{
            "2ooo222": "33333fefe",//切片中的数值按照这个映射替换
        }
         
        for _, funcSlice := range funcMap {//map遍历
            for loc, funcName := range funcSlice {//[]string遍历
                if v, ok := funcMap1[funcName]; ok {//替换切片中数值
                    funcSlice[loc] = v
                }
            }
        }
        fmt.Println(funcMap)//替换之后的打印
    }
    

    输入如下:

    map[1111:[2222 333333] 11115:[2ooo222 33ooo3333]]
    map[1111:[2222 333333] 11115:[33333fefe 33ooo3333]]
    

    解析

    funcSlice 这是一个string的切片,底层和funcMap[key]的值时共用一个地址的,所以直接修改funcSlice就能修改map中切片的值。就类似于如下代码:

    g:=[]string{11,2,3,4,45,6}
    c=g[1:]
    

    g和c目前有部分是公用的,修改c就能修改g,前提是不能扩容c。

  • 相关阅读:
    Jungle Roads POJ 1251
    Light OJ 1234 Harmonic Number
    同余定理
    HDU---1052---田忌赛马
    田忌赛马---空手道俱乐部
    poj---1182---食物链
    Convenient Location(最短路之弗洛伊德)
    js动画实现透明度动画
    js动画实现侧边栏分享
    AngularJS 指令(使浏览器认识自己定义的标签)
  • 原文地址:https://www.cnblogs.com/meiguhuaxian/p/13301866.html
Copyright © 2011-2022 走看看