Sobes.tech
Junior

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

sobes.tech AI

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

Go ენის სტრიქონები არის შეუცვლელი ბაიტების სერია.

მთავარი გზები სტრიქონებთან მუშაობისთვის:

  1. შექმნა:

    // სტრიქონის ლიტერალი
    s1 := "Hello, Go!"
    
    // ბაიტების მასივიდან
    byteArray := []byte{'H', 'e', 'l', 'l', 'o'}
    s2 := string(byteArray)
    
  2. კონკატენაცია:

    s3 := "World"
    result := s1 + " " + s3 // + ოპერატორის გამოყენებით
    

    დიდი რაოდენობის კონკატენაციისთვის უფრო ეფექტურია strings.Builder-ის გამოყენება:

    import "strings"
    
    var sb strings.Builder
    sb.WriteString("Hello")
    sb.WriteString(", ")
    sb.WriteString("World!")
    result2 := sb.String()
    
  3. სიგრძე:

    • ბაიტებში:
      byteLength := len(s1)
      
    • სიმბოლოებში (რუნებში):
      runeLength := utf8.RuneCountInString(s1) // საჭიროებს იმპორტს "unicode/utf8"
      
  4. მოწვდომა სიმბოლოებზე (რუნებზე) და იტერაცია: Go- ის სტრიქონები შედგება ბაიტებისგან, მაგრამ range-ით ისინი დეკოდირებულია რუნებად (Unicode კოდური წერტილები):

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

    პირდაპირი წვდომა ინდექსით ბაიტს აბრუნებს, არა რუნას:

    b := s1[0] // აბრუნებს ბაიტს 'H'
    
  5. გადაყვანა:

    • ბაიტების მასივში:
      byteSlice := []byte(s1)
      
    • რუნების მასივში:
      runeSlice := []rune(s1)
      
  6. strings პაკეტი: მოიცავს მრავალი სასარგებლო ფუნქციას სტრიქონებთან სამუშაოდ:

    • strings.Contains(s, substr): ამოწმებს ქვესიტრის არსებობას.
    • strings.HasPrefix(s, prefix): ამოწმებს, თუ სტრიქონი იწყება მითითებული პრეფიქსით.
    • strings.HasSuffix(s, suffix): ამოწმებს, თუ სტრიქონი მთავრდება მითითებული სუფიქსით.
    • strings.Index(s, substr): ეძებს პირველ შემთხვევას ქვესიტრში.
    • strings.ReplaceAll(s, old, new): იცვლის ყველა შემთხვევას ქვესიტრში.
    • strings.Split(s, sep): ნაწილებს სტრიქონს განყოფილებით.
    • strings.Join(a []string, sep string): აერთიანებს სტრიქონების მასივს განყოფილებით.
    • strings.ToLower(s): გარდაქმნის პატარა ასოებად.
    • strings.ToUpper(s): გარდაქმნის დიდი ასოებად.
    • strings.TrimSpace(s): ამოწმებს ცარიელ ნიშნებს დასაწყისსა და დასასრულზე.
  7. fmt პაკეტი: ფორმატირებული გამოსახულებისთვის და წაკითხვისთვის.

  8. strconv პაკეტი: სტრიქონების გარდაქმნა რიცხვობრივ ტიპებში და პირიქით:

    import "strconv"
    
    i, err := strconv.Atoi("123") // სტრიქონი მთელი რიცხვში
    s := strconv.Itoa(i)         // მთელი რიცხვიდან სტრიქონში
    

სტრიქონების შეუცვლელობა მნიშვნელოვანია და ნიშნავს, რომ ნებისმიერი ოპერაცია, რომელიც ჩანს როგორც სტრიქონის მოდიფიკაცია (მაგალითად, კონკატენაცია ან Replace), სინამდვილეში ქმნის ახალ სტრიქონს.