第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

由于指針,結(jié)構(gòu)中的持久數(shù)據(jù)出現(xiàn)問題。如何獲取具有預(yù)期數(shù)據(jù)的結(jié)構(gòu)的最新實(shí)例?

由于指針,結(jié)構(gòu)中的持久數(shù)據(jù)出現(xiàn)問題。如何獲取具有預(yù)期數(shù)據(jù)的結(jié)構(gòu)的最新實(shí)例?

Go
紅糖糍粑 2023-01-03 14:12:54
我有這個(gè)微服務(wù),可以為用戶準(zhǔn)備數(shù)據(jù)以通過 API 路徑檢索。但是,在用戶可以得到請(qǐng)求的數(shù)據(jù)之前,我需要做一些數(shù)據(jù)處理。我是這樣做的:我將帶有數(shù)據(jù)的填充結(jié)構(gòu)傳遞給兩個(gè)函數(shù)以進(jìn)行處理getDataOriginWeather()和getDataDestinationWeather(). 在這兩個(gè)函數(shù)運(yùn)行之后,API 服務(wù)器就可以供用戶請(qǐng)求數(shù)據(jù),也就是結(jié)構(gòu)。問題是,用戶正在拉取的結(jié)構(gòu)包含通過這兩個(gè)函數(shù)處理數(shù)據(jù)之前和之后的混合記錄。結(jié)構(gòu)的預(yù)期數(shù)據(jù)應(yīng)該只是在通過兩個(gè)函數(shù)傳遞后的數(shù)據(jù)。我正在將這個(gè)結(jié)構(gòu)從一個(gè)包傳遞到另一個(gè)包。這是我的代碼。// the struct I'm working with and that will eventually be get requested by users.package modelstype TravelItenaries struct {    Origin                string    Destination           string    Flight_num            string    Origin_latitude       string    Origin_longitude      string    Destination_latitude  string    Destination_longitude string    Coordinates_ori       string    Coordinates_dest      string    Temp_c_ori            string    Temp_f_ori            string    Temp_c_dest           string    Temp_f_dest           string    LastUpdated           string}這是我在將數(shù)據(jù)發(fā)送給用戶之前處理數(shù)據(jù)的地方。package data// for brevity I have removed how I populated the struct. I do so by using a CSV file. func getDataOriginWeather() (travel *models.TravelItenaries, err error) {    fmt.Println("Getting origin data from Weather API...")    // construct url params for weather API calls.    params := url.Values{        "key": []string{"xxx"},        "q":   []string{""},    }    // build URL for request    u := &url.URL{        Scheme: "https",        Host:   "api.weatherapi.com",        Path:   "/v1/current.json",        // encode params for URL syntax        RawQuery: params.Encode(),    }    client := &http.Client{}    values := u.Query()    var responseData models.OriginWeather    for _, flight := range TravelItenaries {        values.Set("q", flight.Coordinates_ori)        u.RawQuery = values.Encode()        req, err := http.NewRequest("GET", u.String(), nil)        if err != nil {            fmt.Println(err)        }
查看完整描述

1 回答

?
慕森卡

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊

在“運(yùn)行”功能中,您似乎是:

  • 不檢查錯(cuò)誤 - 我認(rèn)為你應(yīng)該。

  • 處理一個(gè)可變的全局變量——如果你不這樣做,你的代碼將更清晰,更容易測(cè)試和調(diào)試。

在 data.Run() 中處理結(jié)構(gòu)后,如何將結(jié)構(gòu)顯式傳遞給處理后的數(shù)據(jù)的 handlers.getWeather()。我在這里使用指針提供了混合結(jié)果。

創(chuàng)建一個(gè)結(jié)構(gòu),其中包含處理呼叫所需的內(nèi)容。為該結(jié)構(gòu)實(shí)現(xiàn) http.Handler。在設(shè)置服務(wù)器時(shí)使用它。

例子:

package main


import (

    "encoding/json"

    "log"

    "net/http"

)


type TravelHandler struct {

    Data interface{} // the preloaded data you need to serve http

}


func (th TravelHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {

    err := json.NewEncoder(w).Encode(th.Data)


    if err != nil {

        http.Error(w, "could not encode data", 500)

    }

}


func createTravelHandler() *TravelHandler {

    // populate travel handler


    return &TravelHandler{}

}


func main() {

    th := createTravelHandler() // no mutable global, return the handler from a function (or pipe it through several functions)


    err := http.ListenAndServe("localhost:3000", th)


    log.Println(err)

}


查看完整回答
反對(duì) 回復(fù) 2023-01-03
  • 1 回答
  • 0 關(guān)注
  • 94 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)