字符串切片的联合列表

I came across this requirement in Go where I need to take the union of slices of strings

This is for Go version 1.12.5

func Union(a, b []string) []string {
    m := make(map[string]bool)

    for _, item := range a {
        m[item] = true
    }

    for _, item := range b {
        if _, ok := m[item]; !ok {
            a = append(a, item)
        }
    }
    return a
}

I have the above piece of code, but the performance is quite critical here because I need to union many slices altogether. I have to do another for loop to loop over the list of slices. Maybe is there any better way to achieve this?

More info: All the slices are ready in one place and each is sorted in lexicographic order. Almost every slice has duplicates with others.