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
映射是可以为零的。因此需要初始化它们。您的顺序错误,在初始化单个摘要之前调用doingSomething。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
&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()
}