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

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

更新地圖中的鍵,同時遍歷該地圖

更新地圖中的鍵,同時遍歷該地圖

Go
神不在的星期二 2023-06-01 10:02:35
我想使用 URL 參數(shù)將密鑰從一個名稱更新為另一個名稱。我有代碼,但輸出不正確。見下文。這是地圖var data map[string][]string調(diào)用函數(shù)的 PUT 方法r.HandleFunc("/updatekey/{key}/{newkey}", handleUpdateKey).Methods("PUT")handleUpdateKey 函數(shù),它被記錄下來,準(zhǔn)確地解釋了它在做什么。func handleUpdateKey(w http.ResponseWriter, r *http.Request) {params := mux.Vars(r)k := params["key"] //get url paramsnk := params["newkey"]s := make([]string, len(data[k])) //create slice of string to store map variablesfor i := range data {             //range over the data map    fmt.Fprintf(w, i)    if k != i { //check if no keys exist with URL key param        fmt.Fprintf(w, "That KEY doesn't exist in memory")        break //kill the loop    } else { //if there is a key the same as the key param        for _, values := range data[i] { //loop over the slice of string (values in that KEY)            s = append(s, values) //append all those items to the slice of string        }        delete(data, k) //delete the old key        for _, svalues := range s { //loop over the slice of string we created earlier            data[nk] = append(data[nk], svalues) //append the items within the slice of string, to the new key... replicating the old key, with a new key name        }    }}}下面應(yīng)該將該 KEY 的所有值分配給一段字符串,我們稍后會對其進(jìn)行迭代并將其添加到新的 KEY 中。這有效,但是,輸出如下,這顯然是不正確的KEY: catt: VALUE: KEY: catt: VALUE: KEY: catt: VALUE: zeusKEY: catt: VALUE: xena舊輸出:KEY: dog: VALUE: zeusKEY: dog: VALUE: xena正確的新輸出:KEY: catt: VALUE: zeusKEY: catt: VALUE: xena
查看完整描述

1 回答

?
瀟瀟雨雨

TA貢獻(xiàn)1833條經(jīng)驗 獲得超4個贊

在大多數(shù)語言中,改變你正在迭代的結(jié)構(gòu)會導(dǎo)致奇怪的事情發(fā)生。特別是地圖。你必須找到另一種方法。


幸運的是,根本不需要迭代。您的循環(huán)只是一個大的 if/else 語句。如果密鑰匹配,則執(zhí)行某些操作。如果沒有,請執(zhí)行其他操作。因為是map,所以不用迭代查找key,直接查找即可。也不需要為了復(fù)制地圖值而進(jìn)行所有費力的循環(huán)。


if val, ok := data[k]; ok {

    // Copy the value

    data[nk] = val

    // Delete the old key

    delete(data, k)

} else {

    fmt.Fprintf(w, "The key %v doesn't exist", k)

}

最后,避免在函數(shù)中使用全局變量。如果函數(shù)可以更改全局變量,則很難理解函數(shù)對程序的影響。data應(yīng)該傳遞給函數(shù)以使其清楚。


func handleUpdateKey(w http.ResponseWriter, r *http.Request, data map[string][]string)


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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