Sobes.tech
Junior

Kā darbojas virknes Go valodā?

sobes.tech AI

Atbilde no AI

Go virknēs ir nemaināmas baitu secības. Tās attēlo kā "baitu griezumu" ([]byte) ar garantētu nemaināmību.

Galvenās īpašības:

  • Nemaināmība: Pēc virknes izveides tā nevar tikt mainīta. Jebkura darbība, kas izskatās kā virknes modifikācija, patiesībā rada jaunu virkni.
  • Attēlojums: Go virknēs galvenokārt attēlo UTF-8 kodētu tekstu. Tomēr tās ir vienkārši baitu secības; interpretācija kā UTF-8 notiek, strādājot ar rūnām.
  • Runas: Unicode simboli Go tiek attēloti ar rune tipu, kas ir int32 pseidonīms. Virknes pārlūkošana ar range automātiski dekodē UTF-8 un nodrošina rūnas un to sākotnējos indeksus baitos.
  • Garums: Funkcija len(s) atgriež virknes baitu skaitu, nevis simbolu (rūnu) skaitu. Rūnu skaitam izmantojiet utf8.RuneCountInString(s) vai pārlūkojiet virkni ar range.
  • Konkatenācija: Virknes apvieno ar operatoru +. Tas rada jaunu virkni. Efektīvai lielu virkņu apvienošanai ieteicams izmantot strings.Builder.

Piemēri:

// Virknes deklarēšana
str := "Hello, pasaule"

// Virknes garums (baitos)
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))

// Pārlūkošana ar rūnām
runeCount := 0
for index, runeValue := range str {
	// index - rūnas sākuma indekss baitos
	// runeValue - rūna
	runeCount++
	// fmt.Printf("Index: %d, Rune: %c (Value: %d)\n", index, runeValue, runeValue)
}
// runeCount - rūnu skaits (9)

// Pieejas pie baitiem pēc indeksa
// Uzmanību: tas ir bait, ne simbols!
// byteAtIndex := str[0] // 'H'
// byteAtIndex := str[7] // '世' simbols sākuma baitu

// Virkņu apvienošana
newStr := str + "!"

// Efektīvai apvienošanai izmantojiet `strings.Builder`
// import "strings"
var builder strings.Builder
builder.WriteString("Hello, ")
builder.WriteString("Pasaule")
efficientStr := builder.String() // "Hello, Pasaule"