Kako se radi sa stringovima u jeziku Go?
sobes.tech АИ
Одговор од АИ
Строки у Језику 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 := "здраво" str2 := " свет" result := str1 + str2 // Конкатенација оператором +За ефикасну конкатенацију великог броја низа користите
strings.Builder.var sb strings.Builder sb.WriteString("здраво") sb.WriteString(" ") sb.WriteString("свет") 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.