Я новичок в Go, и у меня возникла проблема с моим кодом, касающаяся использования json .Unmarshal несколько раз в течение для l oop.
В этом коде первый две функции извлекают ответ из URL, преобразуют его в байтовый формат, а затем распаковывают в данные. Последняя функция выполняет итерацию по списку URL-адресов и должна разбирать их по очереди, каждый раз добавляя массив с набором кодов полета.
Используя набор структур, который я использовал здесь, я возможность использовать getFlightData для одного URL, который будет печатать набор кодов рейсов. Однако при попытке выполнить то же самое в течение 1 oop массив flightToSunnyCities напечатает набор квадратных скобок с пустым пространством внутри. Печать thisNumber в пределах для l oop во время итерации аналогичным образом выведет пустое пространство.
var data ScheduledFlight
func UnmarshalBodyToPointerFlight(Body []byte, welcome *ScheduledFlight) {
err2 := json.Unmarshal(Body, &welcome)
if err2 != nil {
fmt.Println(err2)
os.Exit(1)
}
}
func GetFlightData(url string) *ScheduledFlight {
res := FetchResponse(url)
body := ResponseBodyToByte(res)
UnmarshalBodyToPointerFlight(body, &data)
return &data
}
func UnmarshalFlightStatsURL() []string {
urlList := listOfURL()
var flightsToSunnyCities []string
for _, item := range urlList {
var flightStats *ScheduledFlight = GetFlightData(item)
var thisNumber string = flightStats.FlightNumber
flightsToSunnyCities = append(flightsToSunnyCities, thisNumber)
}
fmt.Println(flightsToSunnyCities)
return flightsToSunnyCities
}
Структуры, которые я использую, показаны здесь:
type Welcome struct {
ScheduledFlights []ScheduledFlight `json:"scheduledFlights"`
}
type ScheduledFlight struct {
CarrierFSCode string `json:"carrierFsCode"`
FlightNumber string `json:"flightNumber"`
DepartureAirportFSCode string `json:"departureAirportFsCode"`
ArrivalAirportFSCode string `json:"arrivalAirportFsCode"`
}
Я подозреваю, что эта проблема возникает из-за ScheduledFlights
типа []ScheduledFlight
, который должен быть приходится, однако я в растерянности от того, каким будет решение. Если у кого-нибудь есть какой-либо совет, он будет очень признателен, спасибо.