У меня есть карта с целочисленными значениями. Я хочу обновить значение, а затем проверить, превышает ли обновленное значение пороговое значение.
Если бы мне не нужно было проверять новое значение, я просто сделал бы
map[key] += 1
Очевидное изменение, если я хочу проверить новое значение:
old_val := map[key]
new_val := old_val + 1
map[key] = new_val
if (new_val > threshold) {
return
}
Однако это делает два индексных вызова карты, что не обязательно является операцией с постоянным временем.
Я хотел бы сделать что-то вроде:
val_p := &(map[key])
*(val_p) += 1
if (*(val_p) > threshold) {
return
}
Однако карты GoLang не предназначены для адресации, поскольку адреса, очевидно, могут измениться (хотя в этом случае это не изменится, потому что я не изменяю карту).
Есть ли какая-нибудь функция, которую я мог бы использовать для обновления элемента на карте, который возвращает новое значение? Специально для целых чисел?