Go 复杂结构的实例化

Go 复杂结构的实例化,go,Go,我在一个名为availability.go的文件中创建了一个结构 package restconsume import ( ) // Availabilityrequest for sabre type Availabilityrequest struct { OTAAirLowFareSearchRQ struct { OriginDestinationInformation []struct { DepartureDateTime

我在一个名为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)存在安装问题 梅因,加油

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

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

var a可用性请求
a、 OTAAirLowFareSearchRQ.TPAExtensions.IntelliSellTransaction.RequestType.Name=“200ITINS”
但老实说,从您的问题判断,您似乎是一名JavaScript程序员,试图在不了解该语言的情况下攻击Go。这是一条通往痛苦的道路。
请被建议至少从开始,然后阅读任何入门级的去(我会推荐)


也是必须的。

此语法完全错误。尚不清楚
“OTA_AirLowFareSearchRQ”:
应该是什么,但字段名不应该用引号括起来。此外,您还为不存在的类型指定了类型名,如
otairlowfaresearchrq
。您已经命名了这些字段,但为它们指定了匿名类型。如果您想用struct文本实例化它们,我强烈建议将每个嵌套类型定义为自己的命名类型;否则,代码将变得极其冗长。
package main

import (
    "restconsume"
    "fmt"
)

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