Ответ 1
Расширенная (с поддержкой Unicode) текстовая обработка не является частью Go stdlib, ¹
и существует в виде множества ( "благословленных" ) сторонних пакетов
под golang.org/x/text/
зонтик.
Как выяснил Шон сам, можно сделать
import (
"golang.org/x/text/cases"
)
c := cases.Fold()
c.String("grüßen")
чтобы вернуть "grüssen".
¹ Это потому, что все, что отправлено в stdlib, подчиняется Go 1 совместимость, и в то время, когда Go 1 был отправлен, определенная функциональность недоступна или был неполным, или его API были в потоке и т.д., поэтому такие биты не поддерживались из ядра, чтобы позволить им созреть.