როგორ შეგიძლიათ მუშაობა სტრიქონებთან Go ენის გამოყენებით?
sobes.tech AI
პასუხი AI-სგან
Go ენის სტრიქონები არის შეუცვლელი ბაიტების სერია.
მთავარი გზები სტრიქონებთან მუშაობისთვის:
-
შექმნა:
// სტრიქონის ლიტერალი s1 := "Hello, Go!" // ბაიტების მასივიდან byteArray := []byte{'H', 'e', 'l', 'l', 'o'} s2 := string(byteArray) -
კონკატენაცია:
s3 := "World" result := s1 + " " + s3 // + ოპერატორის გამოყენებითდიდი რაოდენობის კონკატენაციისთვის უფრო ეფექტურია
strings.Builder-ის გამოყენება:import "strings" var sb strings.Builder sb.WriteString("Hello") sb.WriteString(", ") sb.WriteString("World!") result2 := sb.String() -
სიგრძე:
- ბაიტებში:
byteLength := len(s1) - სიმბოლოებში (რუნებში):
runeLength := utf8.RuneCountInString(s1) // საჭიროებს იმპორტს "unicode/utf8"
- ბაიტებში:
-
მოწვდომა სიმბოლოებზე (რუნებზე) და იტერაცია: Go- ის სტრიქონები შედგება ბაიტებისგან, მაგრამ
range-ით ისინი დეკოდირებულია რუნებად (Unicode კოდური წერტილები):import "fmt" for index, runeValue := range s1 { fmt.Printf("ინდექსი: %d, რუნა: %c, ტიპი: %T\n", index, runeValue, runeValue) }პირდაპირი წვდომა ინდექსით ბაიტს აბრუნებს, არა რუნას:
b := s1[0] // აბრუნებს ბაიტს 'H' -
გადაყვანა:
- ბაიტების მასივში:
byteSlice := []byte(s1) - რუნების მასივში:
runeSlice := []rune(s1)
- ბაიტების მასივში:
-
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): ამოწმებს ცარიელ ნიშნებს დასაწყისსა და დასასრულზე.
-
fmtპაკეტი: ფორმატირებული გამოსახულებისთვის და წაკითხვისთვის. -
strconvპაკეტი: სტრიქონების გარდაქმნა რიცხვობრივ ტიპებში და პირიქით:import "strconv" i, err := strconv.Atoi("123") // სტრიქონი მთელი რიცხვში s := strconv.Itoa(i) // მთელი რიცხვიდან სტრიქონში
სტრიქონების შეუცვლელობა მნიშვნელოვანია და ნიშნავს, რომ ნებისმიერი ოპერაცია, რომელიც ჩანს როგორც სტრიქონის მოდიფიკაცია (მაგალითად, კონკატენაცია ან Replace), სინამდვილეში ქმნის ახალ სტრიქონს.