// Created on savesnippets.com · https://savesnippets.com/x0tOqv9Qz4q74U package main import "fmt" // Reverse a slice of any element type func Reverse[T any](s []T) []T { out := make([]T, len(s)) for i, v := range s { out[len(s)-1-i] = v } return out } // First index of `target` in `s` — needs `comparable` to use == func IndexOf[T comparable](s []T, target T) int { for i, v := range s { if v == target { return i } } return -1 } func main() { fmt.Println(Reverse([]int{1, 2, 3, 4})) // [4 3 2 1] fmt.Println(Reverse([]string{"a", "b", "c"})) // [c b a] fmt.Println(IndexOf([]string{"x", "y", "z"}, "y")) // 1 }