Jak lze pracovat s řetězci v jazyce Go?
sobes.tech AI
Odpověď od AI
Řetězce v jazyce Go jsou neměnné sekvence bajtů. Mohou představovat jak text ve formátu UTF-8, tak libovolná binární data.
Hlavní způsoby práce:
-
Deklarace a inicializace:
var s1 string // Prázdný řetězec s2 := "ahoj" // Inicializace literálem řetězce s3 := `víceřádkový řetězec` // Surový literál řetězce -
Délka řetězce:
len(s2) // Délka v bajtech. Pro "ahoj" je 4. -
Přístup k bajtům:
b := s2[0] // Získání bajtu na indexu. Vrátí 'a' (v UTF-8).Přímý přístup k bajtům nezaručuje získání celého UTF-8 znaku.
-
Přístup k runám (UTF-8 znakům): Řetězce lze iterovat podle run:
for index, runeValue := range s2 { fmt.Printf("Index: %d, Runa: %c\n", index, runeValue) }Délka v rune:
utf8.RuneCountInString(s2) // Délka v rune. Pro "ahoj" je 4. -
Konkatenace řetězců:
str1 := "ahoj" str2 := " svět" result := str1 + str2 // Konkatenace operátorem +Pro efektivní spojování velkého počtu řetězců použijte
strings.Builder.var sb strings.Builder sb.WriteString("ahoj") sb.WriteString(" ") sb.WriteString("svět") result := sb.String() // Výsledný řetězec -
Konverze mezi řetězci a řezem bajtů/rune:
byteslice := []byte(s2) // Řetězec na řez bajtů rs := []rune(s2) // Řetězec na řez run backToString := string(byteslice) // Řez bajtů na řetězec backToString = string(rs) // Řez run na řetězec -
Balíček
strings: Nabízí mnoho užitečných funkcí:Contains,HasPrefix,HasSuffixIndex,LastIndexReplace,ToUpper,ToLower,Trim,TrimSpaceSplit,Join
-
Balíček
strconv: Pro převod řetězců na jiné datové typy (čísla, booleany) a zpět.i, err := strconv.Atoi("123") // Řetězec na int s := strconv.Itoa(456) // Int na řetězec -
Neměnnost: Jakákoli operace, která se zdá, že mění řetězec (například spojování), ve skutečnosti vytváří nový řetězec. To je důležité pro výkon při častých změnách. V takových případech je lepší použít
[]bytenebostrings.Builder.