Generics Go supports generic programming using type parameters. This lesson shows some examples for employing generics in your code. The Go Authors https://golang.org * Type parameters Go functions can be written to work on multiple types using type parameters. The type parameters of a function appear between brackets, before the function's arguments. func Index[T comparable](s []T, x T) int This declaration means that `s` is a slice of any type `T` that fulfills the built-in constraint `comparable`. `x` is also a value of the same type. `comparable` is a useful constraint that makes it possible to use the `==` and `!=` operators on values of the type. In this example, we use it to compare a value to all slice elements until a match is found. This `Index` function works for any type that supports comparison. .play generics/index.go * Generic types In addition to generic functions, Go also supports generic types. A type can be parameterized with a type parameter, which could be useful for implementing generic data structures. This example demonstrates a simple type declaration for a singly-linked list holding any type of value. As an exercise, add some functionality to this list implementation. .play generics/list.go * Congratulations! You finished this lesson! You can go back to the list of [[/tour/list][modules]] to find what to learn next, or continue with the [[javascript:click('.next-page')][next lesson]].