Sobes.tech
Junior

როგორ მუშაობა სტრიქონებთან Go ენაში?

sobes.tech AI

პასუხი AI-სგან

Go ენის სტრიქონები არის შეუცვლელი ბაიტების მიმდევრობა. ისინი შეიძლება წარმოადგენდნენ როგორც UTF-8 ტექსტს, ასევე ნებისმიერი ბინარული მონაცემებს.

ძირითადი სამუშაო მეთოდები:

  • გაცხადება და ინიციალიზაცია:

    var s1 string           // ცარიელი სტრიქონი
    s2 := "გამარჯობა"        // სტრიქონის ლიტერალით ინიციალიზაცია
    s3 := `მრავალსტრიქონიანი
    სტრიქონი`             // ნედლი ლიტერალი
    
  • სტრიქონის სიგრძე:

    len(s2) // ბაიტების რაოდენობა. "გამარჯობა" შემთხვევაში 11.
    
  • ბაიტებზე წვდომა:

    b := s2[0] // ბაიტის მიღება ინდექსით. დაბრუნდება 'გ' (UTF-8-ში).
    

    პირდაპირი წვდომა ბაიტებზე არ გარანტირებს სიმბოლოს UTF-8-ში.

  • რუნებზე წვდომა (UTF-8 სიმბოლოზე): სტრიქონებს შეიძლება იტერირება რუნებზე:

    for index, runeValue := range s2 {
        fmt.Printf("ინდექსი: %d, რუნა: %c\n", index, runeValue)
    }
    

    სტრიქონის სიგრძე რუნებში:

    utf8.RuneCountInString(s2) // სიგრძე რუნებში. "გამარჯობა" შემთხვევაში 11.
    
  • სტრიქონების კონკატენაცია:

    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.