2 回答
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了解匿名结构将变得混乱。
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 中遇到深度嵌套结构的其他人有用。
- 2 回答
- 0 关注
- 143 浏览
添加回答
举报