亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

列出更新的文件而不再次使用 go build

列出更新的文件而不再次使用 go build

Go
慕少森 2022-11-08 14:35:50
我只是從 Go 開始。我有一個關于大猩猩/多路復用器的問題。我正在嘗試列出目錄中的文件;并且響應將從 GET 請求發回以列出文件。現在,當我在目錄中創建一個新文件時;GET 請求沒有列出新文件。我知道我需要再次運行 go build。我可以在不重新構建的情況下做到這一點嗎?type Images struct {    Image     string `json:"image"`    Path      string `json:"path"`    Timestamp string `json:"timestamp"`    Labels    string `json:"labels"`    Version   string `json:"version"`}var images []Imagesfunc getImages(w http.ResponseWriter, r *http.Request) {    w.Header().Set("Content-Type", "application/json")    json.NewEncoder(w).Encode(images)}func main() {    r := mux.NewRouter()    files, err := ioutil.ReadDir(os.Args[1])    if err != nil {        log.Fatal(err)    }    for _, file := range files {        images = append(images, Images{Image: file.Name(), Path: os.Args[1]})    }    fmt.Println(images)    // Route handles & endpoints    r.HandleFunc("/images", getImages).Methods("GET")    log.Fatal(http.ListenAndServe(":8080", r))}
查看完整描述

1 回答

?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

應用程序在啟動時讀取文件列表。要更新文件列表,您必須重新啟動應用程序。您無需運行go build即可獲取更新的文件列表。


要獲取每個請求的最新文件列表,請閱讀請求處理函數中的文件列表:


func getImages(w http.ResponseWriter, r *http.Request) {

    files, err := ioutil.ReadDir(os.Args[1])

    if err != nil {

        http.Error(w, "Internal server error", 500)

        return

    }


    var images []Images

    for _, file := range files {

        images = append(images, Images{Image: file.Name(), Path: os.Args[1]})

    }


    w.Header().Set("Content-Type", "application/json")

    json.NewEncoder(w).Encode(images)

}

從包級變量中main()刪除相應的代碼。images


查看完整回答
反對 回復 2022-11-08
  • 1 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號