Отсутствие оптимизации хвостовой рекурсии в Go расстроило. Лично для меня это один из главных минусов Python.
Почему рекурсия зло можно почитать здесь: https://habrahabr.ru/post/256351/
Очень странная статья по ссылке.
Половину примеров можно привести к хвостовой рекурсии, которую компилятор либо оптимизирует, либо вы ею не будете пользоваться, особенно если вы знаете что такое хвостовая рекурсия.
Вторую же половину читабильнее, красивее и проще чем не хвостовой рекурсией описать сложно.
На плашке Go, где сейчас написано "simple, reliable and efficient" раньше было "pragmatic, concise and orthogonal", а еще раньше в самом начале "procedural language for system programming". В общем то "functional, multiparadigm" там не было никогда.
Для нормального функционального программирования необходимы (но не достаточны!) либо полноценный параметрический полиморфизм (т.е. дженерики; например, это языки ML-семейства), либо полная динамичность (лиспы, эрланг). Go не имеет ни того, ни другого, и поэтому максимум, что про него можно сказать, это то, что в нём есть функциональные элементы.
Но это, безусловно, не значит, что язык плохой — просто он задумывался для другого, и его основные практики и подходы тоже другие.
О функциональности Go