# Golang : Find commonalities in two slices or arrays example

Problem:

You have two slices of the same length and you want to find out if they have similar/common items.

Solution :

• Iterate items of the first slice.
• Get the index number.
• Use the index number to get the second slice item.
• Compare the items.
• If similar or common, then add the item to a new slice.
• Loop until no more item in the first slice.

Here you go!

`````` package main

import (
"fmt"
)

// NOTE : This example will only work if the length of slice a == length of slice b
// In production, make sure to check the length and capacity of the slices
// before comparing.

func main() {

a := []string{"Hello", "No", "Cheers"}

fmt.Println("Slice a : ", a)

b := []string{"Hello", "Yes", "Cheers"}
fmt.Println("Slice b : ", b)

// compare a to be and find common items
// and store into c
c := []string{}

for i := range a {
if a[i] == b[i] {
c = append(c, a[i])
}
}

fmt.Println("Common items : ", c)

// compare a to be and find item not in a
// and store into d
d := []string{}

for i := range a {
if a[i] != b[i] {
d = append(d, a[i])
}
}

fmt.Println("Item that a has over b ", d)

// compare a to be and find item not in b
// and store into e
e := []string{}

for i := range b { // iterate b instead of a
if a[i] != b[i] {
e = append(e, b[i])
}
}

fmt.Println("Item that b has over a ", e)

}
``````

Output :

Slice a : [Hello No Cheers]

Slice b : [Hello Yes Cheers]

Common items : [Hello Cheers]

Item that a has over b [No]

Item that b has over a [Yes]

NOTES: This example will only work if the length of slice a == length of slice b. In production, make sure to check the length and capacity of the slices before comparing.Otherwise, you will get `panic: runtime error: index out of range` error.

References :

https://blog.golang.org/slices