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

Golang 中的语法错误

Golang 中的语法错误

Go
莫回无 2022-01-10 16:28:49
我正在将值从 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 有点陌生。我无法弄清楚这个错误是什么。任何帮助,将不胜感激。
查看完整描述

2 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

当您使用这样的匿名结构时:


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了解匿名结构将变得混乱。


查看完整回答
反对 回复 2022-01-10
?
MYYA

TA贡献1868条经验 获得超4个赞

好的,在参考了 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 中遇到深度嵌套结构的其他人有用。


查看完整回答
反对 回复 2022-01-10
  • 2 回答
  • 0 关注
  • 143 浏览
慕课专栏
更多

添加回答

举报

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