В Go строка — это, по сути, набор символов Юникода, представленных рунами. Иногда вам может потребоваться преобразовать строку в массив рун для работы с отдельными символами. В этой статье блога мы рассмотрим различные методы выполнения этой задачи, попутно предоставляя примеры кода. Итак, приступим!
Метод 1: использование простого цикла for
Один из самых простых способов преобразования строки Go в массив рун — это перебор строки с помощью цикла for. Вот пример:
package main
import "fmt"
func main() {
str := "Hello, World!"
runeArray := make([]rune, 0, len(str))
for _, r := range str {
runeArray = append(runeArray, r)
}
fmt.Println(runeArray)
}
Метод 2: использование преобразования типа []rune.
Go предоставляет встроенное преобразование типа из строки в []rune, которое можно использовать для преобразования строки в массив рун в краткой форме:
package main
import "fmt"
func main() {
str := "Hello, World!"
runeArray := []rune(str)
fmt.Println(runeArray)
}
Метод 3: преобразование с помощью функции utf8.DecodeRuneInString.
Другой подход предполагает использование функции utf8.DecodeRuneInStringиз пакета utf8. Эта функция позволяет расшифровать отдельные руны из строки и построить массив рун:
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
str := "Hello, World!"
runeArray := make([]rune, 0, len(str))
for len(str) > 0 {
r, size := utf8.DecodeRuneInString(str)
runeArray = append(runeArray, r)
str = str[size:]
}
fmt.Println(runeArray)
}
Метод 4. Использование функции strings.Split.
Если вы хотите разделить строку на отдельные символы и сохранить их в массиве рун, вы можете использовать функцию strings.Split. вместе с функцией strings.Join:
package main
import (
"fmt"
"strings"
)
func main() {
str := "Hello, World!"
chars := strings.Split(str, "")
runeArray := make([]rune, len(chars))
for i, char := range chars {
runeArray[i] = []rune(char)[0]
}
fmt.Println(runeArray)
}
В этой статье мы рассмотрели несколько методов преобразования строки Go в массив рун. Мы обсудили использование простого цикла for, преобразование типа []rune, функцию utf8.DecodeRuneInStringи функцию strings.Split. Каждый метод имеет свои преимущества и может подойти для разных сценариев. Понимая эти методы, вы сможете эффективно работать с отдельными символами в строке Go.