// 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"})) }