具有许多嵌套的结构填充错误

时间:2019-02-14 20:25:55

标签: go

我不知道错误在哪里,因为完成结构后,在我看来undefined: Payload

这是一个非常烦人的结构,因为它具有足够的结构嵌套和结构切片

因为我无法解决,您能帮我解决这个问题吗?

https://play.golang.org/p/QewpCfTWY0l

package main

import (
    "fmt"
)

type DialogFlowResponseSuggestion struct {
    Payload struct {
        Google struct {
            ExpectUserResponse bool `json:"expectUserResponse"`
            RichResponse       struct {
                Items []struct {
                    SimpleResponse struct {
                        TextToSpeech string `json:"textToSpeech"`
                    } `json:"simpleResponse"`
                } `json:"items"`
                Suggestions []struct {
                    Title string `json:"title"`
                } `json:"suggestions"`
            } `json:"richResponse"`
        } `json:"google"`
    } `json:"payload"`
}

func main() {
    in := DialogFlowResponseSuggestion{
        Payload: Payload{
            Google: Google{
                ExpectUserResponse: true,
                RichResponse: RichResponse{
                    Items: []Items{
                        Items{SimpleResponse: SimpleResponse{dialog.MReturn.Message}},
                    },
                    Suggestions: []Suggestions{
                        Suggestions{Title: "Suggestion Chips"},
                        Suggestions{Title: "suggestion 1"},
                        Suggestions{Title: "suggestion 2"},
                    },
                },
            },
        },
    }

    fmt.Println(in)
}

1 个答案:

答案 0 :(得分:5)

您的内部struct并没有在任何地方声明-它们都是匿名类型。要实际上通过名称显式实例化它们,它们需要存在于某个地方(playground):

package main

import (
    "fmt"
)

type SimpleResponse struct {
    TextToSpeech        string          `json:"textToSpeech"`
}

type Item struct {
    SimpleResponse      SimpleResponse  `json:"simpleResponse"`
}

type Suggestion struct {
    Title               string          `json:"title"`
}

type RichResponse struct {
    Items               []Item          `json:"items"`
    Suggestions         []Suggestion    `json:"suggestions"`
}

type Google struct {
    ExpectUserResponse  bool            `json:"expectUserResponse"`
    RichResponse        RichResponse    `json:"richResponse"`
}

type Payload struct {
    Google              Google          `json:"google"`
}

type DialogFlowResponseSuggestion struct {
    Payload             Payload         `json:"payload"`
}

func main() {
    in := DialogFlowResponseSuggestion{
            Payload: Payload{
                Google: Google{
                    ExpectUserResponse: true,
                    RichResponse: RichResponse{
                        Items: []Item{
                            Item{SimpleResponse: SimpleResponse{dialog.MReturn.Message}},
                        },
                        Suggestions: []Suggestion{
                            Suggestion{Title: "Suggestion Chips"},
                            Suggestion{Title: "suggestion 1"},
                            Suggestion{Title: "suggestion 2"},
                        },
                    },
                },
            },
        }

    fmt.Println(in)
}