zoukankan      html  css  js  c++  java
  • Go语言基础之map

    Go语言基础之map

    map是Python中的dict类型。

    目录:

    变量声明

    map的声明基本上没有多余的元素。

    var mapName map[keyTpye]valueType
    

    其中:

    • KeyType:表示键的类型。
    • ValueType:表示键对应的值的类型。

    map类型的变量默认初始值为nil,需要使用make()函数来分配内存。语法为:

    make(map[KeyType]ValueType, [cap])
    

    如果不使用make,则会抛出异常。

    package main
    
    import "fmt"
    
    func main() {
        var myMap map[string]string
        myMap["roc"] = "asd"
        fmt.Println(myMap)
    }
    // panic: assignment to entry in nil map
    

    元素赋值

    直接通过kv赋值

    maMap["123"] = "value"
    

    元素删除

    内置函数delete(),用于删除容器内的元素。

    delete(myMap, "123")
    

    如果传入的键不存在,则什么情况也没有,但是如果传入的map变量的值是nil,该调用将导致程序抛出异常panic

    判断某个键是否存在

    Go语言中有个判断map中键是否存在的特殊写法,格式如下:

    value, ok := map[key]
    
    if ok{
        //存在
    }
    else{
        //不存在
    }
    

    map的遍历

    使用range关键字来循环遍历。

    func main() {
        scoreMap := make(map[string]int)
        scoreMap["张三"] = 90
        scoreMap["小明"] = 100
        scoreMap["娜扎"] = 60
        for k, v := range scoreMap {
            fmt.Println(k, v)
        }
    }
    

    只想遍历key的时候,可以按下面的写法:

    func main() {
        scoreMap := make(map[string]int)
        scoreMap["张三"] = 90
        scoreMap["小明"] = 100
        scoreMap["娜扎"] = 60
        for k := range scoreMap {
            fmt.Println(k)
        }
    }
    

    按照指定顺序遍历map

    func main() {
        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])
        }
    }
    

    下面的示例基本包含的map的使用

    package main
    
    import "fmt"
    
    type PersonInfo struct {
        ID string
        Name string
        Address string
    }
    
    func main() {
        var personDB map[string] PersonInfo
        personDB = make(map[string] PersonInfo)
    
        // 给map插入数据
        personDB["1"] = PersonInfo{"123", "Mir.R", "Pub"}
        personDB["2"] = PersonInfo{"111", "Mir.S", "Public"}
        personDB["3"] = PersonInfo{"122", "Mir.Rs", "RP"}
    
        person, ok := personDB["1"]
        if ok{
            fmt.Println("Found Person:", person.ID, person.Name, person.Address)
        } else{
            fmt.Println("Not Found Person")
        }
    }
    /* Found Person: 123 Mir.R Pub */
    
  • 相关阅读:
    Dungeon Game 解答
    Gray Code 解答
    N-Queens II 解答
    N-Queens 解答
    Permutation Sequence 解答
    Generate Parentheses 解答
    Letter Combinations of a Phone Number 解答
    Permutations 解答
    Combination Sum II 解答
    134. Gas Station
  • 原文地址:https://www.cnblogs.com/linga/p/12495434.html
Copyright © 2011-2022 走看看