Как разделить строку по первому разделителю через strings.Cut в Go

Как разделить строку по первому разделителю через strings.Cut в Go
Содержание статьи

Для однократного разделения строки в 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.

Почему нужно проверять found

  • В строке mode= разделитель есть, значение пустое.
  • В строке mode разделителя нет: первая часть равна всей строке, вторая пустая, found равен false.
  • В строке =fast разделитель есть, но пустым оказывается ключ.

Пустое значение и отсутствующий разделитель могут означать разные ситуации. Проверка только value == "" их не различает. А допустимость пустого ключа определяется правилами вашего формата.

Где заканчивается задача этой функции

Cut ищет конкретную подстроку и не разбирает кавычки, escape-последовательности или структуру сложного формата. Если значение может содержать специальные конструкции, сначала определите его грамматику и подходящий парсер.

Для закрепления проверьте обычную пару, несколько разделителей, пустое значение и отсутствие разделителя. Не подменяйте обработку ошибочного формата молчаливым принятием пустых частей.

Строки и обработку ввода можно изучить на курсах Go. Спроектировать разбор конкретного формата поможет наставник по Go.

Похожие статьи по данной теме