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