Ako môžete pracovať s reťazcami v jazyku Go?
sobes.tech AI
Odpoveď od AI
V jazyku Go sú reťazce nemenné sekvencie bajtov.
Hlavné spôsoby práce s reťazcami:
-
Vytváranie:
// Literál reťazca s1 := "Hello, Go!" // Z poľa bajtov byteArray := []byte{'H', 'e', 'l', 'l', 'o'} s2 := string(byteArray) -
Konkatenácia:
s3 := "World" result := s1 + " " + s3 // Použitie operátora +Pre veľké množstvo konkatenácií je efektívnejšie použiť
strings.Builder:import "strings" var sb strings.Builder sb.WriteString("Hello") sb.WriteString(", ") sb.WriteString("World!") result2 := sb.String() -
Dĺžka:
- V bajtoch:
byteLength := len(s1) - V znakoch (rune):
runeLength := utf8.RuneCountInString(s1) // Vyžaduje import "unicode/utf8"
- V bajtoch:
-
Prístup ku znakom (rune) a iterácia: V jazyku Go sú reťazce zložené z bajtov, ale pri iterácii pomocou
rangesú dekódované do rune (kódových bodov Unicode).import "fmt" for index, runeValue := range s1 { fmt.Printf("Index: %d, Rune: %c, Typ: %T\n", index, runeValue, runeValue) }Priamy prístup podľa indexu vracia bajt, nie rune:
b := s1[0] // Vráti bajt 'H' -
Prevod:
- Na pole bajtov:
byteSlice := []byte(s1) - Na pole rune:
runeSlice := []rune(s1)
- Na pole bajtov:
-
Balík
strings: Poskytuje množstvo užitočných funkcií pre prácu s reťazcami:strings.Contains(s, substr): Kontroluje prítomnosť podreťazca.strings.HasPrefix(s, prefix): Kontroluje, či reťazec začína určitým prefixom.strings.HasSuffix(s, suffix): Kontroluje, či reťazec končí určitým sufixom.strings.Index(s, substr): Vyhľadá prvé výskyt podreťazca.strings.ReplaceAll(s, old, new): Nahradí všetky výskyty podreťazca.strings.Split(s, sep): Rozdelí reťazec podľa oddeľovača.strings.Join(a []string, sep string): Spojí pole reťazcov s oddeľovačom.strings.ToLower(s): Prevedie na malé písmená.strings.ToUpper(s): Prevedie na veľké písmená.strings.TrimSpace(s): Odstráni biele znaky z začiatku a konca.
-
Balík
fmt: Pre formátovaný výstup a načítanie reťazcov. -
Balík
strconv: Pre prevod reťazcov na číselné typy a naopak.import "strconv" i, err := strconv.Atoi("123") // Reťazec na int s := strconv.Itoa(i) // Int na reťazec
Nemennosť reťazcov je dôležitá a znamená, že akcia, ktorá sa zdá byť modifikáciou reťazca (napríklad konkatenácia alebo Replace), v skutočnosti vytvára nový reťazec.