Go Generics: Writing Flexible Code