Junior
Kako možete raditi sa nizovima u jeziku Go?
sobes.tech АИ
Одговор од АИ
У Go низови су неизменљиви низови бајтова.
Главни начини рада са низовима:
-
Креирање:
// Литерал низа s1 := "Hello, Go!" // Од бајт масива byteArray := []byte{'H', 'e', 'l', 'l', 'o'} s2 := string(byteArray) -
Конкатенација:
s3 := "World" result := s1 + " " + s3 // Коришћење оператора +За велики број конкатенација, ефикасније је користити
strings.Builder:import "strings" var sb strings.Builder sb.WriteString("Hello") sb.WriteString(", ") sb.WriteString("World!") result2 := sb.String() -
Дужина:
- У бајтовима:
byteLength := len(s1) - У симболима (рунама):
runeLength := utf8.RuneCountInString(s1) // Захтева увоз "unicode/utf8"
- У бајтовима:
-
Приступ симболима (рунама) и итерација: У Go низови су састављени од бајтова, али приликом итерације помоћу
rangeони се декодирају у руне (кодне тачке Unicode).import "fmt" for index, runeValue := range s1 { fmt.Printf("Индекс: %d, Руна: %c, Тип: %T\n", index, runeValue, runeValue) }Прям приступ по индексу враћа бајт, а не руна:
b := s1[0] // Враћа бајт 'H' -
Преобразба:
- У бајт масив:
byteSlice := []byte(s1) - У руна масив:
runeSlice := []rune(s1)
- У бајт масив:
-
Пакет
strings: Пружа многа корисна функција за рад са низовима:strings.Contains(s, substr): Проверава присуство подниза.strings.HasPrefix(s, prefix): Проверава да ли низ почиње са одређеним префиксом.strings.HasSuffix(s, suffix): Проверава да ли низ завршава са одређеним суфиксом.strings.Index(s, substr): Тражи први улазак подниза.strings.ReplaceAll(s, old, new): Замењује све уласке подниза.strings.Split(s, sep): Раздваја низ по раздвојнику.strings.Join(a []string, sep string): Јединствено спаја низове са раздвојником.strings.ToLower(s): Преобразује у мала слова.strings.ToUpper(s): Преобразује у велика слова.strings.TrimSpace(s): Уклања бели простор са почетка и краја.
-
Пакет
fmt: За форматирани излаз и читање низова. -
Пакет
strconv: За претварање низова у бројчане типове и обратно.import "strconv" i, err := strconv.Atoi("123") // Низ у int s := strconv.Itoa(i) // Int у низ
Неизменљивост низова је важна и значи да свака операција која изгледа као модификација низа (на пример, конкатенација или Replace) заправо креира нови низ.