MST

星途 面试题库

面试题:Go语言for - range循环在map中的特性与应用

在Go语言中,有一个map[string]int,键为字符串,值为整数。使用for - range循环遍历这个map,要求:1. 统计map中所有值的总和;2. 找出值最大的键。请写出实现此功能的代码,并说明for - range遍历map时的顺序特点。
32.6万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
)

func main() {
    m := map[string]int{
        "a": 10,
        "b": 20,
        "c": 30,
    }
    sum := 0
    maxKey := ""
    maxValue := 0
    for key, value := range m {
        sum += value
        if value > maxValue {
            maxValue = value
            maxKey = key
        }
    }
    fmt.Printf("总和: %d\n", sum)
    fmt.Printf("值最大的键: %s\n", maxKey)
}

for - range遍历map时的顺序特点

在Go语言中,使用for - range遍历map时,遍历顺序是随机的。每次运行程序,遍历的顺序可能都不一样。这是因为map的实现是基于哈希表,哈希表的设计目的主要是为了快速的查找和插入操作,而不是为了有序遍历。如果需要按特定顺序遍历map,通常需要先将键(或值)提取出来,进行排序后再按序遍历。