我了解 maps in go,但這段代碼讓我感到困惑: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但接下來的內(nèi)容對我來說毫無意義。代碼如何自己定義一個 api.Pod、corev1.ResourceName 等?那不是struct定義的字符串嗎?
2 回答

侃侃爾雅
TA貢獻1801條經(jīng)驗 獲得超16個贊
testCasesstring是一個帶有匿名類型鍵和值的映射:
struct {
pod *api.Pod
required []corev1.ResourceName
err string
}
是pod指向類型值api.Pod(也是結(jié)構(gòu))的指針,required是具有類型元素的切片corev1.ResourceName,并且err是字符串。
因此testCases映射將包含許多指向具有上述結(jié)構(gòu)的結(jié)構(gòu)的字符串。

慕神8447489
TA貢獻1780條經(jīng)驗 獲得超1個贊
接下來是某種“匿名”結(jié)構(gòu)。
它將等同于:
testCases := map[string]StructName
如果您指定了如下結(jié)構(gòu):
type StructName struct {
pod *api.Pod
required []corev1.ResourceName
err string
}
- 2 回答
- 0 關(guān)注
- 188 瀏覽
添加回答
舉報
0/150
提交
取消