Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- An example of how to find the difference between two slices.
- This example uses empty struct (0 bytes) for map values.
- */
- package main
- import (
- "fmt"
- )
- // empty struct (0 bytes)
- type void struct{}
- // missing compares two slices and returns slice of differences
- func missing(a, b []string) []string {
- // create map with length of the 'a' slice
- ma := make(map[string]void, len(a))
- diffs := []string{}
- // Convert first slice to map with empty struct (0 bytes)
- for _, ka := range a {
- ma[ka] = void{}
- }
- // find missing values in a
- for _, kb := range b {
- if _, ok := ma[kb]; !ok {
- diffs = append(diffs, kb)
- }
- }
- return diffs
- }
- func main() {
- a := []string{"a", "b", "c", "d", "e", "f", "g"}
- b := []string{"a", "c", "d", "e", "f", "g", "b"}
- c := []string{"a", "b", "x", "y", "z"}
- fmt.Println("a and b diffs", missing(a, b))
- fmt.Println("a and c diffs", missing(a, c))
- }
- /*
- Output:
- a and b diffs []
- a and c diffs [x y z]
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement