Ваш первый пример кода использует маршрутизатор SIRD , тогда как второй пример использует сгенерированный маршрутизатор из файла маршрутов.
В третьем примере просто используется файл маршрутов, который генерирует маршрутизатор, который передает управление другому маршрутизатору для указанного префикса c - независимо от того, был ли он сгенерирован или кодирован вручную. Таким образом, это ничем не отличается от второго примера.
Нет явного преимущества одного над другим. Использование файлов маршрутов обычно более лаконично и «проще», но у вас больше контроля при использовании DSL для привязки ваших маршрутов к некоторым действиям.
Структура папок также является просто вопросом вкуса; go с макетом по умолчанию, и все будет в порядке.