როგორ მუშაობა სტრიქონებთან 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,HasSuffixIndex,LastIndexReplace,ToUpper,ToLower,Trim,TrimSpaceSplit,Join
-
strconvმოდული: სტრიქონების გარდაქმნა სხვა მონაცემთა ტიპებში (ციფრები, ბულიანები) და обратное.i, err := strconv.Atoi("123") // სტრიქონი მთელი რანგში s := strconv.Itoa(456) // მთელი რანგიდან სტრიქონი -
შეუცვლელობა: ნებისმიერი ოპერაცია, რომელიც ჩანს როგორც სტრიქონის ცვლილება (მაგ. კონკატენაცია), სინამდვილეში ქმნის ახალ სტრიქონს. ეს მნიშვნელოვანია ეფექტურობისთვის ხშირი ცვლილებების დროს. ასეთ შემთხვევებში უკეთესია გამოიყენოთ
[]byteანstrings.Builder.