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), իրականում ստեղծում է նոր տող: