Kaip galite dirbti su eilutėmis Go kalboje?
sobes.tech AI
Atsakymas iš AI
Go kalboje eilutės yra nepakeičiamos baitų sekos.
Pagrindiniai būdai dirbti su eilutėmis:
-
Kūrimas:
// Eilutės literalas s1 := "Hello, Go!" // Iš baitų masyvo byteArray := []byte{'H', 'e', 'l', 'l', 'o'} s2 := string(byteArray) -
Sujungimas:
s3 := "World" result := s1 + " " + s3 // Naudojant + operatoriųDėl didelio sujungimų kiekio efektyviau naudoti
strings.Builder:import "strings" var sb strings.Builder sb.WriteString("Hello") sb.WriteString(", ") sb.WriteString("World!") result2 := sb.String() -
Ilgis:
- Baituose:
byteLength := len(s1) - Simboliuose (rune):
runeLength := utf8.RuneCountInString(s1) // Reikalauja importo "unicode/utf8"
- Baituose:
-
Prieiga prie simbolių (rune) ir iteracija: Go eilutės sudarytos iš baitų, bet naudojant
rangejie dekoduojami į rune (Unicode kodų taškus).import "fmt" for index, runeValue := range s1 { fmt.Printf("Indeksas: %d, Runa: %c, Tipas: %T\n", index, runeValue, runeValue) }Tiesioginis prieigos pagal indeksą būdas grąžina baitą, ne rune:
b := s1[0] // Grąžina baitą 'H' -
Transformacija:
- į baitų masyvą:
byteSlice := []byte(s1) - į rune masyvą:
runeSlice := []rune(s1)
- į baitų masyvą:
-
stringspaketas: Pateikia daugybę naudingų funkcijų darbui su eilutėmis:strings.Contains(s, substr): Patikrina, ar yra podalis.strings.HasPrefix(s, prefix): Patikrina, ar eilutė prasideda nurodytu prefiksu.strings.HasSuffix(s, suffix): Patikrina, ar eilutė baigiasi nurodytu sufiksu.strings.Index(s, substr): Suranda pirmą pasikartojimą podalyje.strings.ReplaceAll(s, old, new): Pakeičia visus pasikartojimus.strings.Split(s, sep): Skiria eilutę pagal skyriklį.strings.Join(a []string, sep string): Sujungia eilutės masyvą su skyrikliu.strings.ToLower(s): Paverčia mažosiomis raidėmis.strings.ToUpper(s): Paverčia didžiosiomis raidėmis.strings.TrimSpace(s): Pašalina tarpus nuo pradžios ir pabaigos.
-
fmtpaketas: Formatuotam išvedimui ir nuskaitymui. -
strconvpaketas: Konvertuoti eilutes į skaitinius tipus ir atvirkščiai:import "strconv" i, err := strconv.Atoi("123") // Eilutė į int s := strconv.Itoa(i) // Int į eilutę
Nepakeičiamumas reiškia, kad bet kokia operacija, kuri atrodo kaip eilutės modifikacija (pvz., sujungimas ar Replace), iš tikrųjų sukuria naują eilutę.