Proponho que você exponha uma variável de retorno bool no mapa de sincronização, alterando-a de:
função (m * Map) Delete (key interface {})
para:
função (m * Map) Delete (key interface {}) bool
O valor de retorno informa ao chamador se o item foi removido do Mapa ou não (verdadeiro se a chave estava no mapa, falso se a chamada não mudou nada). Parece que Map.Delete chama Map.delete internamente, que já possui os dados de retorno necessários em alguns casos.
Essa mudança não quebraria o código existente.
Essa mudança não quebraria o código existente.
Sim, seria:
var deleteFn func(interface{}) = m.Delete
Sim, não podemos alterar nenhuma assinatura de API. Veja também: https://blog.merovius.de/2015/07/29/backwards-compatibility-in-go.html
Não podemos alterar esta assinatura.
Comentários muito úteis
Sim, seria: