Zastrzeżenie: grałem w Go tylko przez jeden dzień, więc jest duża szansa, że wiele przegapiłem.
Czy ktoś wie, dlaczego w Go nie ma prawdziwego wsparcia dla typów ogólnych / szablonów / whatsInAName? Jest więc rodzaj ogólny map
, który jest dostarczany przez kompilator, podczas gdy programista Go nie może napisać własnej implementacji. Biorąc pod uwagę całą rozmowę o uczynieniu Go tak ortogonalnym, jak to tylko możliwe, dlaczego mogę UŻYWAĆ typu ogólnego, ale nie STWORZYĆ nowego?
Zwłaszcza jeśli chodzi o programowanie funkcjonalne, istnieją lambdy, a nawet domknięcia, ale w statycznym systemie typów brakuje typów ogólnych, jak napisać, no cóż, ogólne funkcje wyższego rzędu, takie jak filter(predicate, list)
? OK, powiązane listy i tym podobne można zrobić, interface{}
poświęcając bezpieczeństwo typów.
Ponieważ szybkie wyszukiwanie w SO / Google nie ujawniło żadnych spostrzeżeń, wygląda na to, że generics, jeśli w ogóle, zostaną dodane do Go po namyśle. Ufam, że Thompson radzi sobie znacznie lepiej niż ludzie z Java, ale po co trzymać z daleka generyczne? A może są zaplanowane i jeszcze nie wdrożone?
interface{}
poświęca bezpieczeństwo typu statycznego . Jednak jest to nieco dziwna skarga, gdy wspomina się o Schemacie w następnym akapicie, ponieważ Schemat zwykle nie ma statycznego sprawdzania typu.