Обратная косая черта \
не интерпретируется анализатором регулярных выражений, она интерпретируется в строковом литерале. Вы должны снова избежать обратной косой черты:
regexp.Compile("[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+")
Строка, заключенная в кавычки "
с двойными кавычками, в Go называется «интерпретируемым строковым литералом». Интерпретируемые строковые литералы похожи на строковые литералы в большинстве языков: \
символы обратной косой черты не включены буквально, они используются для придания особого значения следующему символу. Источник должен содержать \\
две обратной косой черты в строке, чтобы получить один символ обратной косой черты в проанализированном значении.
Go имеет еще одну альтернативу, которая может быть полезна при написании строковых литералов для регулярных выражений: «необработанный строковый литерал» заключен в кавычки `
символов обратного кавычка. В необработанном строковом литерале нет специальных символов, поэтому, если в вашем шаблоне нет обратной черты, вы можете использовать этот синтаксис, не экранируя ничего:
regexp.Compile(`[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+`)
Они описаны в разделе «Строковые литералы» спецификации Go .