Преобразование строки Go в массив рун: изучение нескольких методов

В 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.