comparable is a constraint used in generics to determine of the type supports equality checks (i.e., ==, !=). This is important if your generic function performs equality checks.
func main() {
fmt.Println(Contains([]string{"a", "b", "c"}, "a"))
fmt.Println(Contains([]int{1, 2, 3}, 2))
fmt.Println(Contains([][]int{{1, 2, 3}}, []int{1})) // compilation error: []int does not satisfy comparable
}
func Contains[T comparable](items []T, target T) bool {
for _, item := range items {
if item == target {
return true
}
}
return false
}