Go 对这个map[string]结构是如何定义的感到困惑
我理解go中的地图,但这段代码让我感到困惑:Go 对这个map[string]结构是如何定义的感到困惑,go,Go,我理解go中的地图,但这段代码让我感到困惑: testCases := map[string]struct { pod *api.Pod required []corev1.ResourceName err string }{ "init container resource missing": { pod: &api.Pod{ Spec:
testCases := map[string]struct {
pod *api.Pod
required []corev1.ResourceName
err string
}{
"init container resource missing": {
pod: &api.Pod{
Spec: api.PodSpec{
InitContainers: []api.Container{{
Resources: api.ResourceRequirements{
Requests: api.ResourceList{api.ResourceCPU: resource.MustParse("1m")},
Limits: api.ResourceList{api.ResourceCPU: resource.MustParse("2m")},
},
}},
},
},
required: []corev1.ResourceName{corev1.ResourceMemory},
err: `must specify memory`,
},
"container resource missing": {
pod: &api.Pod{
Spec: api.PodSpec{
Containers: []api.Container{{
Resources: api.ResourceRequirements{
Requests: api.ResourceList{api.ResourceCPU: resource.MustParse("1m")},
Limits: api.ResourceList{api.ResourceCPU: resource.MustParse("2m")},
},
}},
},
},
required: []corev1.ResourceName{corev1.ResourceMemory},
err: `must specify memory`,
},
}
我明白这一点:
testCases := map[string]struct
但接下来的事情对我来说毫无意义。代码如何定义api.Pod、corev1.ResourceName等。?
这不是一个字符串到结构的定义?testCases是一个映射,其键类型为string,值类型为:
struct {
pod *api.Pod
required []corev1.ResourceName
err string
}
pod是一个指向api类型值的指针。pod也是一个结构,必需是一个包含corev1.ResourceName类型元素的切片,err是一个字符串
因此,testCases映射将包含许多指向具有上述结构的结构的字符串。之后是某种匿名结构 这相当于:
testCases := map[string]StructName
如果已指定结构,如:
type StructName struct {
pod *api.Pod
required []corev1.ResourceName
err string
}
啊,好吧,现在说得通了。谢谢,我有点沮丧了!