func getNgramFullList(ngram1, ngram2 *orderedmap.OrderedMap) *orderedmap.OrderedMap {
	fullList := orderedmap.New()
	fullList.SetEscapeHTML(false)
	for _, v := range ngram1.Keys() {
		fullList.Set(v, 0)
	}
	for _, v := range ngram2.Keys() {
		fullList.Set(v, 0)
	}
	return fullList
}
Just merging two maps, we won't use values here, only keys
package emailsimilarity
import (
	"math"
	"strings"
	"github.com/iancoleman/orderedmap"
)
var filterDomains = []string{"@gmail.com", ".local", "@users.noreply.github.com"}
func FindSimilarEmails(seeds, emails []string) []string {
	similarEmails := make([]string, 0, len(emails))
	for _, seed := range seeds {
		for _, email := range emails {
			similarity := calculateSimilarity(seed, email)
			if similarity > 0.55 {
				similarEmails = append(similarEmails, email)
			}
		}
	}
	return similarEmails
}
func calculateSimilarity(seed, email string) float64 {
	seedNgrams := getNgrams(seed, 2)
	emailNgrams := getNgrams(email, 2)
	ngramList := getNgramFullList(seedNgrams, emailNgrams)
	seedVec := getNgramVector(seedNgrams, ngramList)
	emailVec := getNgramVector(emailNgrams, ngramList)
	similarity := dotProduct(seedVec, emailVec) / (math.Sqrt(sum(square(seedVec))) * math.Sqrt(sum(square(emailVec))))
	return similarity
}
func getNgrams(word string, n int) *orderedmap.OrderedMap {
	ngrams := orderedmap.New()
	ngrams.SetEscapeHTML(false)  
	for _, f := range filterDomains {
		word = strings.TrimRight(word, f)
	}
	for i := 0; i < len(word)-n+1; i++ {
		ngram := word[i : i+n]
		if val, ok := ngrams.Get(ngram); ok {
			ngrams.Set(ngram, val.(int)+1)
		} else {
			ngrams.Set(ngram, 1)
		}
	}
	return ngrams
}