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