Как конвертировать int32 Unicode в строку - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть функция, которая получает список имен хостов, построчно, в формате среза int32.Это функция:

func HandlePipeList(targetsList []int32) {
    //Print output item by item
    for i := 0; i < len(targetsList); i++ {
        fmt.Printf("%c", targetsList[i])
    }
}

Поскольку я конвертирую ее в %c с помощью fmt, она работает и правильно печатает имена хостов.Моя проблема возникает, когда я пытаюсь передать targetList в виде строки другой функции.Как я могу сделать такое же преобразование для targetList, чтобы строки могли быть переданы в виде строки?(strconv.Itoa здесь не работает).

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

Встроенный тип руны - это просто псевдоним для int32, так что это та же проблема, что и преобразование []rune в string.Вы можете использовать что-то вроде strings.Builder (https://godoc.org/strings#Builder) для сборки строки:

func runesToString(l []int32) (string, error) {
    b := strings.Builder{}
    for _, n := range l {
        _, err := b.WriteRune(n)
        if err != nil {
            return "", err
        }
    }
    return b.String(), nil
}

https://play.golang.org/p/MEXzsamubp6 имеет полный рабочий пример.

0 голосов
/ 09 февраля 2019

Кодовая точка Unicode в Go - это rune.Тип Go rune является псевдонимом для типа Go int32.


Спецификация языка программирования Go

Числовые типы

int32   the set of all signed 32-bit integers

rune    alias for int32

Преобразования

Преобразования в и из типа строки

Преобразование фрагмента рун в тип строки приводит к строке, котораяявляется объединением отдельных значений рун, преобразованных в строки.


Используйте преобразование типа string.Например,

package main

import (
    "fmt"
)

func main() {
    targetsList := []int32("Testing, testing, ...")

    str := string(targetsList)
    fmt.Println(str)
}

Детская площадка: https://play.golang.org/p/d-s0uLFl9MG

Вывод:

Testing, testing, ...

Ссылка: The Go Blog: Строки, байты,Руны и символы в Go

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...