Go 如何将int32 unicode转换为字符串
我有一个函数,它以int32切片格式逐行接收主机名列表。这就是功能: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
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
}