这种恐慌的原因是什么?

Jas*_*onS 0 go

我是Go的新手,有人可以帮我诊断这个问题.

type ValidationStatus struct {
    Passed bool
    Errors map[string]*ValidationError
}

// ...

status := ValidationStatus{Passed: true}

// ...

status.Passed = false
fmt.Println(reflect.TypeOf(typeField.Name)) // string
fmt.Println(reflect.TypeOf(validationError)) // *validation.ValidationError   
status.Errors[typeField.Name] = validationError // Panic triggered here.
Run Code Online (Sandbox Code Playgroud)

validationError在验证包中定义.此代码与结构文件位于同一文件中.

这是我第一次遇到这样的问题,我想我可能会错误地使用地图但是我不明白为什么这不会导致编译错误所以可能是类型问题?任何解决这个的指针都将非常感激.

pet*_*rSO 5

您没有告诉我们错误消息是什么!

地图类型

使用内置函数make创建一个新的空映射值,它将map类型和可选容量提示作为参数:

make(map[string]int)
make(map[string]int, 100)
Run Code Online (Sandbox Code Playgroud)

例如,

status := ValidationStatus{Passed: true, Errors: make(map[string]*ValidationError)}
Run Code Online (Sandbox Code Playgroud)