Чӣ тавр метавон бо сатрҳо дар забони Go кор кард?
sobes.tech AI
Ҷавоб аз 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.