История изменений
Исправление kaldeon, (текущая версия) :
Они не ломают Go. Их было сложно реализовать таким образом, чтобы они не ломал Go. Но теперь они есть в языке и всё норм.
О том, что именно вызвало трудности:
- Minimize new concepts
- Complexity falls on the writer of generic code, not the user
- Writer and user can work independently
- Short build times, fast execution times
- Preserve clarity and simplicity of Go
https://go.dev/blog/why-generics
Конкретные примеры можно найти в куче отклонённых предложений. Я лично не особо с ними знаком, но могу привести такой пример, возможно, слегка не по теме — сейчас нельзя добавить дженерик замыканию, потому что нужно сохранить нулевые значения, а без указания конкретного типа это невозможно. Подобные ограничения, мне кажется, делают невозможным подход «давайте всё спишем у C++/Java/C#».
Исходная версия kaldeon, :
Они не ломают Go. Их было сложно реализовать таким образом, чтобы он не ломал Go. Но теперь они есть в языке и всё норм.
О том, что именно вызвало трудности:
- Minimize new concepts
- Complexity falls on the writer of generic code, not the user
- Writer and user can work independently
- Short build times, fast execution times
- Preserve clarity and simplicity of Go
https://go.dev/blog/why-generics
Конкретные примеры можно найти в куче отклонённых предложений. Я лично не особо с ними знаком, но могу привести такой пример, возможно, слегка не по теме — сейчас нельзя добавить дженерик замыканию, потому что нужно сохранить нулевые значения, а без указания конкретного типа это невозможно. Подобные ограничения, мне кажется, делают невозможным подход «давайте всё спишем у C++/Java/C#».