package util // 1. oldstring element is not in new : abandon(delete) // 2. new element is not in oldstring : add(add) func Difference(oldstring []string, newstring []string) map[string]string { var diff = make(map[string]string) // Loop two times, first to find oldstring strings not in newstring, // second loop to find newstring strings not in oldstring for i := 0; i < 2; i++ { for _, s1 := range oldstring { found := false for _, s2 := range newstring { if s1 == s2 { found = true break } } // String not found. We add it to return slice if !found && i == 0 { diff[s1] = "delete" } if !found && i != 0 { diff[s1] = "add" } } // Swap the slices, only if it was the first loop if i == 0 { oldstring, newstring = newstring, oldstring } } return diff }