为了账号安全,请及时绑定邮箱和手机立即绑定

对这个 map[string]struct 的定义方式感到困惑

对这个 map[string]struct 的定义方式感到困惑

Go
慕森王 2023-05-22 17:11:39
我了解 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但接下来的内容对我来说毫无意义。代码如何自己定义一个 api.Pod、corev1.ResourceName 等?那不是struct定义的字符串吗?
查看完整描述

2 回答

?
侃侃尔雅

TA贡献1801条经验 获得超15个赞

testCasesstring是一个带有匿名类型键和值的映射:


struct {

    pod      *api.Pod

    required []corev1.ResourceName

    err      string

}

是pod指向类型值api.Pod(也是结构)的指针,required是具有类型元素的切片corev1.ResourceName,并且err是字符串。


因此testCases映射将包含许多指向具有上述结构的结构的字符串。


查看完整回答
反对 回复 2023-05-22
?
慕神8447489

TA贡献1780条经验 获得超1个赞

接下来是某种“匿名”结构。


它将等同于:


testCases := map[string]StructName

如果您指定了如下结构:


type StructName struct {

    pod      *api.Pod

    required []corev1.ResourceName

    err      string

}


查看完整回答
反对 回复 2023-05-22
  • 2 回答
  • 0 关注
  • 153 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信