GO-map数据结构

一、map简介

key - value 的数据结构,又叫字典或者关联数组

1、声明(声明是不会分配内存,初始化用make)

var map1 map[key type] value type

var a map[string]string

var a map[string]int

var a map[int]string

var a map[string] map[string]string

2、map相关操作

func testMap(){
    var a map[string]string
    a = make(map[string]string,10)
    a["hello"] = "world" //插入和更新操作
    a["hello2"] = "world2" //插入和更新操作
    Val,ok := a["hello"] //查找
    if ok {
        for k,v := range a {
            fmt.Println(k,v)
        }
    }
    delete(a,"hello") //删除
    fmt.Println(a,Val,ok)
    fmt.Println(a["hello"])
    fmt.Println(len(a)) //长度
}
 
3、map是引用类型
func modify(a map[string]string)map[string]string{
    a["hello2"] = "hello bin change"
    return a
}
 
4、slice of map切片中包含字典
func sliceOfMap(){
    items := make([]map[int]int,5)
    for i := 0;i<5;i++{
        items[i] = make(map[int]int)
    }
    fmt.Println(items)
}
 
5、map排序
a、先获取所有key,把key进行排序
b、按照排序好的key,进行遍历
示例:
func testMap2(){
    var a map[string]string

    a = make(map[string]string,10)
    a["hello"] = "world" //插入和更新操作
    a["hello3"] = "world3" //插入和更新操作
    a["hello2"] = "world2" //插入和更新操作
    fmt.Println(a)
    var keys []string


    for k,v := range a {
        fmt.Printf("a[%s] = %s\n",k,v)
        keys = append(keys,k)
    }
    fmt.Println("\n")
    sort.Strings(keys) //对key进行排序
    for _,k := range keys {
        fmt.Printf("a[%s] = %s\n",k,a[k])
    }
}
 
6、map反转
初始化另外一个map,把key和value互换即可
 示例:
func testMap3(){
    var a map[string]string
    var b map[string]string

    a = make(map[string]string,10)
    b = make(map[string]string,10)
    a["hello"] = "world" //插入和更新操作
    a["hello3"] = "world3" //插入和更新操作
    a["hello2"] = "world2" //插入和更新操作
    for k,v :=range a {
        b[v] = k
    }
    fmt.Println(a)
    fmt.Println(b)
}
 
 
 
posted @ 2017-12-20 16:21 willpower-chen 阅读(...) 评论(...) 编辑 收藏