Ինչպես կարելի է աշխատել տողերով Go լեզվում?
sobes.tech AI
Պատասխան AI-ից
Go լեզվում տողերը անփոփոխ հաջորդականություններ են բայթների։ Դրանք կարող են ներկայացնել ինչպես UTF-8 տեքստ, այնպես էլ ցանկացած երկկողմանի binary տվյալներ։
Հիմնական աշխատանքային մեթոդները՝
-
Հայտարարում և ինիցիալիզացիա:
var s1 string // Դատարկ տող s2 := "բարև" // Տողի լիտերալով ինիցիալիզացիա s3 := `շատաշերտ տող` // Կեղտոտ տողի լիտերալ -
Տողի երկարությունը:
len(s2) // Բայտների քանակը։ "բարև" համար դա կլինի 12։ -
Բայտների հասանելիություն:
b := s2[0] // Բայտ ստանալ ըստ ինդեքսի։ Վերադարձնում է 'բ' (UTF-8-ում):Ուղիղ հասանելիությունը բայտներին չի երաշխավորում UTF-8 նշանի ստացումը։
-
Ռուների (UTF-8 նշանների) հասանելիություն: Տողերը կարելի է անցնել ռուներով՝
for index, runeValue := range s2 { fmt.Printf("Ինդեքս: %d, Ռունա: %c\n", index, runeValue) }Տողի երկարությունը ռուներով՝
utf8.RuneCountInString(s2) // Ռուների քանակը։ "բարև" համար դա կլինի 6։ -
Տողերի կոնկատենացիա:
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") // Տողից int s := strconv.Itoa(456) // int-ից տող -
Անփոփոխություն: Յուրաքանչյուր գործողություն, որը թվում է որպես տողի փոփոխում (օրինակ, կոնկատենացիա), իրականում ստեղծում է նոր տող։ Սա կարևոր է հաշվի առնել արդյունավետության համար հաճախակի փոփոխությունների ժամանակ։ Այդ դեպքում ավելի լավ է օգտագործել
[]byteկամstrings.Builder։