Junior
Kaip veikia eilutės Go kalboje?
sobes.tech AI
Atsakymas iš AI
„Go“ eilutės yra nepakeičiami baitų sekos. Jos yra vaizduojamos kaip „baitų dalis“ ([]byte) ir garantuoja nepakeičiamumą.
Pagrindinės savybės:
- Nepakeičiamumas: Sukūrus eilutę, jos negalima pakeisti. Bet kokia operacija, kuri atrodo kaip eilutės modifikavimas, iš tikrųjų sukuria naują eilutę.
- Atvaizdavimas: „Go“ eilutės dažniausiai vaizduoja UTF-8 koduotą tekstą. Tačiau jos yra tik baitų sekos; kaip UTF-8 interpretacija vyksta dirbant su rūnais.
- Rūnai: Unicode simboliai „Go“ yra vaizduojami tipu
rune, kuris yraint32pseudonimas. Eilutės perėjimas naudojantrangeautomatiškai dekoduoja UTF-8 ir pateikia rūnus bei jų pradines indeksus baituose. - Ilgis: Funkcija
len(s)grąžina eilutės baitų skaičių, o ne simbolių (rūnų). Rūnų skaičiui gauti naudokiteutf8.RuneCountInString(s)arba pereikite per eilutę surange. - Konkatenacija: Eilutės sujungiamos naudojant operatorių
+. Tai sukuria naują eilutę. Efektyviam didelio kiekio eilutės sujungimui rekomenduojama naudotistrings.Builder.
Pavyzdžiai:
// Eilutės deklaravimas
str := "Hello, pasaulis"
// Eilutės ilgis (baituose)
byteLen := len(str) // 13 (H(1)e(1)l(1)l(1)o(1),(1) (1)p(3)a(3)s(3)a(3)u(3)l(3)i(3)k(3))
// Pereiti per rūnus
runeCount := 0
for index, runeValue := range str {
// index - rūno pradinis indeksas baituose
// runeValue - rūnas
runeCount++
// fmt.Printf("Index: %d, Rune: %c (Value: %d)\n", index, runeValue, runeValue)
}
// runeCount - rūnų skaičius (9)
// Prieigos prie baito pagal indeksą
// Dėmesio: tai baitas, ne simbolis!
// byteAtIndex := str[0] // 'H'
// byteAtIndex := str[7] // '世' simbolio pradinis baitas
// Eilutės sujungimas
newStr := str + "!"
// Naudojant `strings.Builder` efektyviam sujungimui
// import "strings"
var builder strings.Builder
builder.WriteString("Hello, ")
builder.WriteString("Pasaulis")
efficientStr := builder.String() // "Hello, Pasaulis"