Sobes.tech
Junior

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, HasSuffix
    • Index, LastIndex
    • Replace, ToUpper, ToLower, Trim, TrimSpace
    • Split, Join
  • Модул strconv: За преобразовање низа у друге типове података (бројеве, булеве) и обратно.

    i, err := strconv.Atoi("123") // Низ у int
    s := strconv.Itoa(456)        // int у низ
    
  • Имутебилност: Сваке операције које изгледају као измена низа (нпр. конкатенација), заправо креирају нови низ. Ово је важно узети у обзир за перформансе при честим изменама. У таквим случајевима је боље користити []byte или strings.Builder.