首页 > 其他 > 详细

golang的map[string][]string的技巧

时间:2020-07-15 00:34:00      阅读:46      评论:0      收藏:0      [点我收藏+]

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

需求

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

代码如下:

import (
    "fmt"
)

func CheckMaoSlice() {
    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 {
        for loc, funcName := range funcSlice {
            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。

golang的map[string][]string的技巧

原文:https://www.cnblogs.com/meiguhuaxian/p/13301866.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!