Better way for map update concurrent control?

Hi, if there is a map with key-value pair like (IP string, info struct{data string}) and I need to frequently update the data for each IP and from time to time I also need to add/remove IPs, so what is the better way for the concurrent control for the update of that Map except the RWLock? because for RWLock it will lock the whole map for each IP data update, thanks!

Maybe use sync.Map(sync package - sync - Go Packages).
sync.Map takes care of all that locking (or atomic operations) for you—so no manual locking needed