gpt4 book ai didi

go - 更新结构中的 map[string]*struct 变量

转载 作者:数据小太阳 更新时间:2023-10-29 03:36:25 25 4
gpt4 key购买 nike

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)
}

我得到的错误是

panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x1091ac4]

goroutine 1 [running]: main.summarizeLevel(...) /Users/i345678/go/src/github.concur.com/test/test/main.go:68 main.(*Something).doingSomething(0xc00000c028) /Users/i345678/go/src/github.concur.com/test/test/main.go:89 +0x64 main.main() /Users/i345678/go/src/github.concur.com/test/test/main.go:58 +0x44 exit status 2

级别字符串的值为“1”和“2”。

最佳答案

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()


}

map 是空的。因此需要初始化它们。

关于go - 更新结构中的 map[string]*struct 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55336073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com