Golang 中的语法错误

我正在将值从 JSON 编组到结构中。这是我的结构:


type AutoGenerated struct {

    ID int64 `json:"id"`

    SuccessHTTPResponseCode int `json:"success_http_response_code"`

    MaxRetries int `json:"max_retries"`

    CallbackWebhookURL string `json:"callback_webhook_url"`

    Request struct {

        URL string `json:"url"`   (error occurs here)

        Method string `json:"method"`

        HTTPHeaders struct {

            ContentType string `json:"content-Type"`

            Accept string `json:"accept"`

        } `json:"http_headers"`

        Body struct {

            Foo string `json:"foo"`

        } `json:"body"`

    } `json:"request"`

}

下面是我编组它的函数:


func createBSON() []byte {

      data1:= AutoGenerated{

      ID: 1462406556741,

      SuccessHTTPResponseCode: 200,

      MaxRetries: 3,

      CallbackWebhookURL: "http://requestb.in/vh61ztvh",

      Request: {

          URL: "http://requestb.in/vh61ztvh",

          Method: "POST",

          HTTPHeaders: {

              ContentType: "Application/json",

            Accept: "Application/json",

          },

          Body : {

              Foo: "bar",

          },

      },


}

    sample,err:=json.Marshal(data1)

    check(err)

    fmt.Print(sample)

    return sample

}

我做了一些更改,以上是我更新的功能。我收到以下错误:


  missing type in composite literal

我对 Golang 有点陌生。我无法弄清楚这个错误是什么。任何帮助,将不胜感激。


莫回无
浏览 144回答 2
2回答

holdtom

当您使用这样的匿名结构时:type AutoGenerate struct {        Request: struct {                URL    string                Method string        }}这整个块是类型名称struct {        URL string        Method string}换句话说,你必须以这种方式启动data := AutoGenerate{        Request: struct {                URL    string                Method string        }{                URL: "http://somedomain.com/",                Method: "GET",        },}因此,在您的情况下,最好将每个结构分成一个命名的:type Request struct {         URL    string         Method string}type AutoGenerate struct {        Request Request}请参阅https://play.golang.org/p/kZDN2yhlkz了解匿名结构将变得混乱。

MYYA

好的,在参考了 Paul 和 PieOhPah 发布的链接之后,这就是我创建结构的方式:type AutoGenerated struct {    ID int64 `json:"id"`    SuccessHTTPResponseCode int `json:"success_http_response_code"`    MaxRetries int `json:"max_retries"`    CallbackWebhookURL string `json:"callback_webhook_url"`    Request `json:"request"`}type Request struct{  URL string `json:"url"`  Method string `json:"method"`  HTTPHeaders `json:"http_headers"`  Body `json:"body"`}type HTTPHeaders struct{  ContentType string `json:"content-Type"`  Accept string `json:"accept"`}type Body struct{    Foo string `json:"foo"`}这是我初始化和编组它的函数:func createBSON() []byte {data1:= AutoGenerated{    ID: 1462406556741,    SuccessHTTPResponseCode: 200,    MaxRetries: 3,    CallbackWebhookURL: "http://requestb.in/vh61ztvh",    Request: Request{        URL: "http://requestb.in/vh61ztvh",        Method: "POST",        HTTPHeaders: HTTPHeaders {            ContentType: "Application/json",          Accept: "Application/json",        },        Body : Body {            Foo: "bar",        },    },}    fmt.Print(data1)    sample,err:=json.Marshal(data1)    s := string(sample)    fmt.Println(s)    return sample}我发布了这篇文章,希望这对在 Go 中遇到深度嵌套结构的其他人有用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go