Go语言学习之Map

Map定义

Map创建

map[KeyType]ValueType
//KeyType代表 key的类型,例如string,int等
//ValueType代表values的类型,例如string,int等

使用make函数创建map,map类型的变量初始值是nil,需要使用make()函数来分配内存

make(map[KeyType]ValueType, cap)
//其中cap表示map的容量,比如这个map里可以放8对儿KeyValues对儿
//cap不是必须的

Map基本使用

func main(){
    scoreMap := make(map[string]int,8)  //使用Make创建一个key是string类型,value是int类型,容量为8的 Map
    scoreMap["张三"] = 90   //给scoreMap创建一个Key为张三,Value为90的值
    scoreMap["李四"] = 100 //给scoreMap创建一个Key为李四,Value为100的值
    fmt.Println(scoreMap)          //打印这个Map
    fmt.Println(scoreMap["张三"])  //获取这个Map里张三对应的Value
    fmt.Printf("类型为: %T \n",scoreMap) //打印scoreMap的类型
}

结果:
map[张三:90 李四:100]
90
类型为: map[string]int 

Map在声明的时候就初始化

func main() {
    userInfo := map[string]string{
        "username": "pprof.cn",
        "password": "123456",
    }
    fmt.Println(userInfo) 
}


结果:
map[password:123456 username:pprof.cn]

Map判断某个Key是否存在

语法

 value, ok := map[key]
//Map通过Key获取value的时候有两个返回值:
//一个是value,如果value不存在就返回nil,不会报错
//一个是 ok,如果value存在ok=true,否则ok=false,可以通过ok是否为true 来判断value是不是存在

示例:

func main(){
    scoreMap := make(map[string]int,8)
    scoreMap["张三"] = 90
    scoreMap["李四"] = 100

    v,ok := scoreMap["张三"]  //会返回两个返回值,一个是value,一个是ok是true或者false
    fmt.Println(v,ok)  
    if ok {
        fmt.Println(v)
    } else{
        fmt.Println("value 不存在")
    }
}
结果:
90 true 90

Map的遍历

func main(){
    scoreMap := make(map[string]int,8)
    scoreMap["张三"] = 90
    scoreMap["李四"] = 100
    scoreMap["王五"] = 110
    for k,v := range scoreMap{
        fmt.Println(k, v)  //打印出key value
    }

结果:

张三 90
李四 100
王五 110

使用delete()内建函数从map中删除一组KeyValue

语法

delete(map, key)

//map表示要删除KeyValue的map

//key表示要删除键值对的Key

示例

func main(){
    scoreMap := make(map[string]int,8)
    scoreMap["张三"] = 90
    scoreMap["李四"] = 100
    scoreMap["王五"] = 110
    fmt.Println("-------删除前--------")
    fmt.Println(scoreMap)
    delete(scoreMap, "张三")
    fmt.Println("-------删除后--------")
    fmt.Println(scoreMap)
}

结果:
-------删除前--------
map[张三:90 李四:100 王五:110]
-------删除后--------
map[李四:100 王五:110]

 

posted @ 2020-10-12 17:51  差点点温柔  阅读(206)  评论(0编辑  收藏  举报