我有一个函数,该函数以int32 slice格式逐行接收主机名列表。这是功能:
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
在这里无效)。
答案 0 :(得分:1)
Go中的Unicode代码点是rune
。 Go类型rune
是Go类型int32
的别名。
The Go Programming Language Specification
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, ...
答案 1 :(得分:0)
built-in rune type只是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有一个完整的工作示例。