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)
- 1 回答
- 0 關(guān)注
- 131 瀏覽
添加回答
舉報