


Для однократного разделения строки в Go удобно использовать strings.Cut. Функция возвращает часть до разделителя, часть после него и флаг обнаружения. На Mentoring.digital разберём это на учебной паре region=eu=west.
package main
import (
"fmt"
"strings"
)
func main() {
key, value, found := strings.Cut("region=eu=west", "=")
fmt.Printf("%q %q %v\n", key, value, found)
}До первого знака равенства находится region, после него остаётся eu=west, а флаг равен true. Второй разделитель не запускает новый разрез. API доступен начиная с Go 1.18.
mode= разделитель есть, значение пустое.mode разделителя нет: первая часть равна всей строке, вторая пустая, found равен false.=fast разделитель есть, но пустым оказывается ключ.Пустое значение и отсутствующий разделитель могут означать разные ситуации. Проверка только value == "" их не различает. А допустимость пустого ключа определяется правилами вашего формата.
Cut ищет конкретную подстроку и не разбирает кавычки, escape-последовательности или структуру сложного формата. Если значение может содержать специальные конструкции, сначала определите его грамматику и подходящий парсер.
Для закрепления проверьте обычную пару, несколько разделителей, пустое значение и отсутствие разделителя. Не подменяйте обработку ошибочного формата молчаливым принятием пустых частей.
Строки и обработку ввода можно изучить на курсах Go. Спроектировать разбор конкретного формата поможет наставник по Go.