2022-09-16:以下go语言代码输出什么?A:101;B:100;C:1;D:2。 package main

2022-09-16:以下go语言代码输出什么?A:101;B:100;C:1;D:2。

package main

import (
    "fmt"
)

type MS struct {
    Name string
    Cgs  int
}

func main() {
    hashRun := make(map[string]*MS)
    mss := []MS{
        MS{Name: "m", Cgs: 100},
        MS{Name: "m", Cgs: 1},
    }
    for _, ms := range mss {
        if h, ok := hashRun[ms.Name]; ok {
            h.Cgs += ms.Cgs
        } else {
            hashRun[ms.Name] = &ms
        }
    }
    for _, ms := range hashRun {
        fmt.Println(ms.Cgs)
    }
}


























答案选D。有部分人会选A。这是经典的for range,变量共用问题。

在这里插入图片描述

本作品采用《CC 协议》,转载必须注明作者和本文链接
微信公众号:福大大架构师每日一题。最新面试题,涉及golang,rust,mysql,redis,云原生,算法,分布式,网络,操作系统。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!