// package decls, imports...

// Person, who implements Equaler...

type Equaler(type T) interface {
  Equal(other T) bool
}

func Contains(type T Equaler)(elems []T, target T) bool {
  for _, elem := range elems {
    if elem.Equal(target) {
      return true
    }
  }

  return false
}

func main() {
  people := []Person{Person{"Dave"}, Person{"Bob"}, Person{"Steve"}}
  fmt.Println(Contains(people, Person{"Dave"}))
}