Go 正在更新结构中的map[string]*struct变量 主程序包 输入“fmt” 类型状态字符串 常数( //通过检查通过了。 通过状态=“通过” //失败检查失败。 FAIL=“FAIL” //警告无法执行检查。 WARN=“WARN” //信息信息 INFO=“INFO” //跳过测试的跳过 SKIP=“SKIP” ) //SummaryLevelWise是按CI级别运行的控制检查结果的摘要 键入某物结构{ SummaryLevelWise映射[字符串]*摘要 } //摘要是运行的控件检查结果的摘要。 类型摘要结构{ Pass int`json:“总通行证”` Fail int`json:“总失败”` Warn int`json:“总警告”` Info int`json:“总信息”` Skip int`json:“总计跳过”` } func main(){ s:=&Something{} s、 做某事 //这是我尝试更新map[string]*struct变量的一种方法 s、 SummaryLevelWise[“1”]。通过,s.SummaryLevelWise[“1”]。失败,s.SummaryLevelWise[“1”]。警告,s.SummaryLevelWise[“1”]。信息,s.SummaryLevelWise[“1”]。跳过=0,0,0,0,0 //另一种方法不起作用 //s.SummaryLevelWise[“1”]=&Summary{0,0,0,0} } 职能摘要级别(摘要*摘要){ 道岔通行证{ 个案通行证: 小结。通过++ 案例失败: 总结。失败++ 案例警告: 摘要:警告++ 个案资料: 概要信息++ 案例跳过: 摘要.跳过++ } } func(某物*某物)正在做某事{ 级别1:=“1” 对于i:=0;i

Go 正在更新结构中的map[string]*struct变量 主程序包 输入“fmt” 类型状态字符串 常数( //通过检查通过了。 通过状态=“通过” //失败检查失败。 FAIL=“FAIL” //警告无法执行检查。 WARN=“WARN” //信息信息 INFO=“INFO” //跳过测试的跳过 SKIP=“SKIP” ) //SummaryLevelWise是按CI级别运行的控制检查结果的摘要 键入某物结构{ SummaryLevelWise映射[字符串]*摘要 } //摘要是运行的控件检查结果的摘要。 类型摘要结构{ Pass int`json:“总通行证”` Fail int`json:“总失败”` Warn int`json:“总警告”` Info int`json:“总信息”` Skip int`json:“总计跳过”` } func main(){ s:=&Something{} s、 做某事 //这是我尝试更新map[string]*struct变量的一种方法 s、 SummaryLevelWise[“1”]。通过,s.SummaryLevelWise[“1”]。失败,s.SummaryLevelWise[“1”]。警告,s.SummaryLevelWise[“1”]。信息,s.SummaryLevelWise[“1”]。跳过=0,0,0,0,0 //另一种方法不起作用 //s.SummaryLevelWise[“1”]=&Summary{0,0,0,0} } 职能摘要级别(摘要*摘要){ 道岔通行证{ 个案通行证: 小结。通过++ 案例失败: 总结。失败++ 案例警告: 摘要:警告++ 个案资料: 概要信息++ 案例跳过: 摘要.跳过++ } } func(某物*某物)正在做某事{ 级别1:=“1” 对于i:=0;i,go,Go,映射是可以为零的。因此需要初始化它们。您的顺序错误,在初始化单个摘要之前调用doingSomething。&Something{}的计算结果是指向某物的指针,但是它的映射字段是nil,不涉及该映射的元素。 package main import "fmt" type State string const ( // PASS check passed. PASS State = "PASS" // FAIL check failed. FAIL = "FAIL

映射是可以为零的。因此需要初始化它们。

您的顺序错误,在初始化单个摘要之前调用doingSomething。
&Something{}
的计算结果是指向
某物的指针,但是它的映射字段是
nil
,不涉及该映射的元素。
package main

import "fmt"

type State string

const (
    // PASS check passed.
    PASS State = "PASS"
    // FAIL check failed.
    FAIL = "FAIL"
    // WARN could not carry out check.
    WARN = "WARN"
    // INFO informational message
    INFO = "INFO"
    // SKIP for tests skipped
    SKIP = "SKIP"
)

// SummaryLevelWise is a summary of results of control checks run CIS Levelwise
type Something struct{
    SummaryLevelWise map[string]*Summary
}

// Summary is a summary of the results of control checks run.
type Summary struct {
    Pass int `json:"total_pass"`
    Fail int `json:"total_fail"`
    Warn int `json:"total_warn"`
    Info int `json:"total_info"`
    Skip int `json:"total_skip"`
}


func main() {

    s := &Something{}
    s.doingSomething()
    // This is one way I tried to update the map[string]*struct variable
    s.SummaryLevelWise["1"].Pass, s.SummaryLevelWise["1"].Fail, s.SummaryLevelWise["1"].Warn, s.SummaryLevelWise["1"].Info, s.SummaryLevelWise["1"].Skip = 0,0,0,0,0

   // Another way that didn't work
   // s.SummaryLevelWise["1"] = &Summary{0,0,0,0,0}

}


func summarizeLevel(summary *Summary) {
    switch PASS{
    case PASS:
        summary.Pass++
    case FAIL:
        summary.Fail++
    case WARN:
        summary.Warn++
    case INFO:
        summary.Info++
    case SKIP:
        summary.Skip++
    }
}


func(something *Something ) doingSomething(){

    level1 := "1"

    for i:=0; i<10; i++ {
        summarizeLevel(something.SummaryLevelWise[level1])
    }
    fmt.Println(something)
}
func main() {




    s := &Something{}
    // Intialize map.
    s.SummaryLevelWise = map[string]*Summary{}
    //s.SummaryLevelWise["1"].Pass, s.SummaryLevelWise["1"].Fail, s.SummaryLevelWise["1"].Warn, s.SummaryLevelWise["1"].Info, s.SummaryLevelWise["1"].Skip = 0,0,0,0,0
    s.SummaryLevelWise["1"] = &Summary{0,0,0,0,0}
    s.doingSomething()


}