Sobes.tech
Junior

Go тилинде жолдор менен кантип иштеш керек?

sobes.tech AI

AIден жооп

Go тилиндеги саптар — өзгөрүлбөс байттардын тизмеси. Алар UTF-8 текстин да, каалаган бинардык маалыматтарды да көрсөтө алат.

Негизги иштөө ыкмалары:

  • Жарыялоо жана баштапкы кылуу:

    var s1 string           // Бош сап
    s2 := "салам"            // Саптык литер менен баштапкы кылуу
    s3 := `көп саптуу
    сап`                 // Жасалма литер
    
  • Саптын узундугу:

    len(s2) // Байткалардын саны. "салам" үчүн 5 болот.
    
  • Байткаларга жетүү:

    b := s2[0] // Индекс боюнча байтканы алуу. 'с' кайтарат (UTF-8де).
    

    Түз байткаларга жетүү UTF-8 белгисин албоо мүмкүнчүлүгүн бербейт.

  • Руналарга (UTF-8 белгилерине) жетүү: Саптарды руналар боюнча кайтарууга болот:

    for index, runeValue := range s2 {
        fmt.Printf("Индекс: %d, Руна: %c\n", index, runeValue)
    }
    

    Руналардын узундугу:

    utf8.RuneCountInString(s2) // Руналардын саны. "салам" үчүн 5 болот.
    
  • Саптарды бириктирүү:

    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") // Саптан бүтүн санга
    s := strconv.Itoa(456)        // Бүтүн санды сапка айландыруу
    
  • Өзгөрүлбөсдүк: Ар бир операция, ал тургай сапты өзгөртүү сыяктуу көрүнгөндөй, чындыкта жаңы сап түзөт. Бул көп өзгөртүүлөрдө натыйжалуулук үчүн маанилүү. Мындай учурда []byte же strings.Builder колдонуу жакшыраак.