猿问

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

我了解 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定义的字符串吗?


慕森王
浏览 154回答 2
2回答

侃侃尔雅

testCasesstring是一个带有匿名类型键和值的映射:struct {    pod      *api.Pod    required []corev1.ResourceName    err      string}是pod指向类型值api.Pod(也是结构)的指针,required是具有类型元素的切片corev1.ResourceName,并且err是字符串。因此testCases映射将包含许多指向具有上述结构的结构的字符串。

慕神8447489

接下来是某种“匿名”结构。它将等同于:testCases := map[string]StructName如果您指定了如下结构:type StructName struct {    pod      *api.Pod    required []corev1.ResourceName    err      string}
随时随地看视频慕课网APP

相关分类

Go
我要回答