Go 如何将int32 unicode转换为字符串

Go 如何将int32 unicode转换为字符串,go,Go,我有一个函数,它以int32切片格式逐行接收主机名列表。这就是功能: func HandlePipeList(targetsList []int32) { //Print output item by item for i := 0; i < len(targetsList); i++ { fmt.Printf("%c", targetsList[i]) } } 由于我正在使用fmt将其转换为%c,因此它可以正常工作并正确打印主机名。 当我试图将t

我有一个函数,它以int32切片格式逐行接收主机名列表。这就是功能:

func HandlePipeList(targetsList []int32) {
    //Print output item by item
    for i := 0; i < len(targetsList); i++ {
        fmt.Printf("%c", targetsList[i])
    }
}
由于我正在使用fmt将其转换为%c,因此它可以正常工作并正确打印主机名。
当我试图将targetsList作为字符串传递给另一个函数时,问题就出现了。如何对targetsList进行相同的转换,以便将行作为字符串传递?strconv.Itoa在这里不起作用。

Go中的unicode代码点是符文。Go type rune是Go type int32的别名

与字符串类型之间的转换

将符文片段转换为字符串类型会产生一个 转换为字符串的单个符文值的串联

使用字符串类型转换。比如说,

package main

import (
    "fmt"
)

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

    str := string(targetsList)
    fmt.Println(str)
}
游乐场:

输出:

Testing, testing, ...
参考:

只是int32的别名,因此这与将[]符文转换为字符串的问题相同。您可以使用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
}

有一个完整的工作示例。

您能解释一下为什么使用%c而不是其他东西吗?targetList中的每个元素代表什么?
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
}