Идиоматичный Go — это простой, читаемый код без лишних абстракций. Основные принципы: явная обработка ошибок (if err != nil), маленькие интерфейсы (1-2 метода), плоская структура пакетов, naming по конвенции (camelCase, короткие имена переменных в маленьком скоупе). Не тащи паттерны из Java — нет фабрик, синглтонов, DI-контейнеров. Используй composition вместо наследования, goroutines вместо callbacks, channels вместо shared memory. Читай Effective Go и Go Proverbs — это каноны.