Как можно работать со строками в языке Go?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Строки в Go являются неизменяемыми последовательностями байт. Они могут представлять как текст UTF-8, так и произвольные двоичные данные.
Основные способы работы:
-
Объявление и инициализация:
var s1 string // Пустая строка s2 := "привет" // Инициализация строковым литералом s3 := `многострочная строка` // Сырой строковый литерал -
Длина строки:
len(s2) // Длина в байтах. Для "привет" это будет 12. -
Доступ к байтам:
b := s2[0] // Получение байта по индексу. Вернет 'п' (в UTF-8).Прямой доступ к байтам не гарантирует получение символа UTF-8.
-
Доступ к рунам (символам UTF-8): Строки можно итерировать по рунам:
for index, runeValue := range s2 { fmt.Printf("Индекс: %d, Руна: %c\n", index, runeValue) }Длина в рунах:
utf8.RuneCountInString(s2) // Длина в рунах. Для "привет" это будет 6. -
Конкатенация строк:
str1 := "hello" str2 := " world" result := str1 + str2 // Конкатенация оператором +Для эффективной конкатенации большого числа строк используйте
strings.Builder.var sb strings.Builder sb.WriteString("hello") sb.WriteString(" ") sb.WriteString("world") result := sb.String() // Получение результирующей строки -
Преобразование между строками и срезами байт/рун:
byteslice := []byte(s2) // Строка в срез байт rs := []rune(s2) // Строка в срез рун backToString := string(byteslice) // Срез байт в строку backToString = string(rs) // Срез рун в строку -
Модуль
strings: Предоставляет множество полезных функций:Contains,HasPrefix,HasSuffixIndex,LastIndexReplace,ToUpper,ToLower,Trim,TrimSpaceSplit,Join
-
Модуль
strconv: Для преобразования строк в другие типы данных (числа, булевы) и обратно.i, err := strconv.Atoi("123") // Строка в int s := strconv.Itoa(456) // int в строку -
Неизменяемость: Любые операции, кажущиеся изменением строки (например, конкатенация), на самом деле создают новую строку. Это важно учитывать для производительности при частых изменениях. В таких случаях лучше использовать
[]byteилиstrings.Builder.