Generic programming in go