Generic programming in golang