登录
首页 >  Golang >  Go问答

创建复杂结构的实例

来源:stackoverflow

时间:2024-03-10 11:18:24 376浏览 收藏

大家好,我们又见面了啊~本文《创建复杂结构的实例》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

问题内容

我在名为availability.go的文件中创建了一个结构体

package restconsume

import (

)

// availabilityrequest for sabre
type availabilityrequest struct {
     otaairlowfaresearchrq struct {
         origindestinationinformation []struct {
            departuredatetime   string `json:"departuredatetime"`
            destinationlocation struct {
                locationcode string `json:"locationcode"`
            } `json:"destinationlocation"`
            originlocation struct {
                locationcode string `json:"locationcode"`
            } `json:"originlocation"`
            rph string `json:"rph"`
        } `json:"origindestinationinformation"`
        pos struct {
            source []struct {
                pseudocitycode string `json:"pseudocitycode" default:"f9ce"`
                requestorid    struct {
                    companyname struct {
                        code string `json:"code" default:"tn"`
                    } `json:"companyname"`
                    id   string `json:"id" default:"1"`
                    type string `json:"type" default:"1"`
                } `json:"requestorid"`
            } `json:"source"`
        } `json:"pos"`
        tpaextensions struct {
            intelliselltransaction struct {
                requesttype struct {
                    name string `json:"name" default:"200itins"`
                } `json:"requesttype"`
            } `json:"intelliselltransaction"`
        } `json:"tpa_extensions"`
        travelpreferences struct {
            tpaextensions struct {
                datasources struct {
                    atpco string `json:"atpco" default:"enable"`
                    lcc   string `json:"lcc" default:"disable"`
                    ndc   string `json:"ndc" default:"disable"`
                } `json:"datasources"`
                numtrips struct {
                } `json:"numtrips"`
            } `json:"tpa_extensions"`
        } `json:"travelpreferences"`
        travelerinfosummary struct {
            airtraveleravail []struct {
                passengertypequantity []struct {
                    code     string `json:"code"`
                    quantity int    `json:"quantity"`
                } `json:"passengertypequantity"`
            } `json:"airtraveleravail"`
            seatsrequested []int `json:"seatsrequested" default:"1"`
        } `json:"travelerinfosummary"`
        version string `json:"version" default:"1"`
    } `json:"ota_airlowfaresearchrq"`
}

// addadeparturedate to set the date you leave
func (a *availabilityrequest) addadeparturedate() availabilityrequest {
a.otaairlowfaresearchrq.origindestinationinformation[0].departuredatetime = "2020-03-21"
    return *a
}
//addorigindestination to set the ori and dest
func (a *availabilityrequest) addorigindestination(origin ,destination string)  {
a.otaairlowfaresearchrq.origindestinationinformation[0].destinationlocation.locationcode = destination
    a.otaairlowfaresearchrq.origindestinationinformation[0].originlocation.locationcode = origin
}

现在我已将此包导入到我的主包中,并且仅使用一个子结构(tpaextensions)进行实例化时遇到问题 main.go

package main

import (
    "restconsume"
    "fmt"
)

func main() {
var a= new(restconsume.Availabilityrequest)
    a = Availabilityrequest{
          "OTA_AirLowFareSearchRQ":OTAAirLowFareSearchRQ{
        "IntelliSellTransaction": IntelliSellTransaction{
            "RequestType": RequestType{
              "Name": "200ITINS"},
          },
        },
    }
}

错误信息 未定义:可用性请求 我的问题是如何实例化这种复杂的结构?


解决方案


最简单的答案是不要尝试使用结构体文字,而是将顶级类型的变量初始化为其类型的适当零值,然后仅显式设置需要的字段,如下所示:

var a Availabilityrequest
a.OTAAirLowFareSearchRQ.TPAExtensions.IntelliSellTransaction.RequestType.Name = "200ITINS"

但老实说,从你的问题来看,你似乎是一名 javascript 程序员,试图攻击 go,但事先对 go 语言没有太多了解。这是一条通往痛苦的道路。
请注意,至少从 the Tour of Go 开始,然后阅读 go 上的任何入门级 book(我建议 this one)。

"Effective Go"也是必须的。

终于介绍完啦!小伙伴们,这篇关于《创建复杂结构的实例》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>