« Back to Index

Go: Generic Slice Map function

View original Gist on GitHub

Tags: #go #computation #generics

slice-map.go

// https://play.golang.com/p/TbawROSRv8X

package main

import (
	"fmt"

	"golang.org/x/net/idna"
)

func main() {
	s := []string{"xn--6frz82g", "xn--9dbq2a", "xn--vhquv"}
	fmt.Printf("%#v\n", s)
	Map[string](s, func(zone string) string {
		u, err := idna.ToUnicode(zone)
		if err != nil {
			return zone
		}
		return u
	})
	fmt.Printf("%#v\n", s)
}

// Map takes a slice and a map function,
// then applies it to each element of the slice.
func Map[T any](s []T, m func(T) T) {
	for i, e := range s {
		s[i] = m(e)
	}
}