Kaip dirbti su eilutėmis Go kalboje?
sobes.tech AI
Atsakymas iš AI
Eilutės Go kalboje yra nepakeičiami baitų sekos. Jos gali atstovauti tiek UTF-8 tekstą, tiek bet kokius dvejetainius duomenis.
Pagrindiniai darbo būdai:
-
Deklaravimas ir inicializavimas:
var s1 string // Tuščia eilutė s2 := "labas" // Inicializacija su literalu s3 := `daugiaeilutė eilutė` // Žaliųjų simbolių literalas -
Eilutės ilgis:
len(s2) // baitų skaičius. "labas" tai bus 5. -
Prieiga prie baitų:
b := s2[0] // baito gavimas pagal indeksą. Grąžins 'l' (UTF-8).)Tiesioginė prieiga prie baitų neu garantuoja simbolo gavimo UTF-8.
-
Prieiga prie rune (UTF-8 simbolų): Eilutes galima iteruoti per rune:
for index, runeValue := range s2 { fmt.Printf("Indeksas: %d, Runa: %c\n", index, runeValue) }Eilutės ilgis rune:
utf8.RuneCountInString(s2) // Ilgis rune. "labas" tai bus 5. -
Eilutės sujungimas:
str1 := "labas" str2 := " pasauli" result := str1 + str2 // Sujungimas operatoriumi +Efektyviam didelių eilučių sujungimui naudokite
strings.Builder:var sb strings.Builder sb.WriteString("labas") sb.WriteString(" ") sb.WriteString("pasauli") result := sb.String() // Gauta rezultato eilutė -
Eilučių ir baitų/rune fragmentų konvertavimas:
byteslice := []byte(s2) // Eilutė į baitų fragmentą rs := []rune(s2) // Eilutė į rune fragmentą backToString := string(byteslice) // baitų fragmentas į eilutę backToString = string(rs) // rune fragmentas į eilutę -
stringsmodulis: Pateikia daugybę naudingų funkcijų:Contains,HasPrefix,HasSuffixIndex,LastIndexReplace,ToUpper,ToLower,Trim,TrimSpaceSplit,Join
-
strconvmodulis: Eilutės konvertavimas į kitus duomenų tipus (skaičius, loginę reikšmę) ir atvirkščiai.i, err := strconv.Atoi("123") // eilutė į int s := strconv.Itoa(456) // int į eilutę -
Nepakeičiamumas: Bet kokios operacijos, kurios atrodo kaip eilutės keitimas (pvz., sujungimas), iš tikrųjų sukuria naują eilutę. Tai svarbu atsižvelgti į našumą dažnų pakeitimų metu. Tokiu atveju geriau naudoti
[]bytearbastrings.Builder.