Golang strconv.AppendQuoteRuneToASCII() 函数及示例
什么是 strconv.AppendQuoteRuneToASCII() 函数
Go语言中的 strconv 包提供了许多实用的函数,其中strconv.AppendQuoteRuneToASCII()函数是一个十分有用的函数。这个函数的主要作用是将一个字符以ASCII码的形式放到目标切片(byte类型数据)中去。它的格式如下:
func AppendQuoteRuneToASCII(dst []byte, r rune) []byte
其中,dst表示待输出的byte类型的目标切片,r表示要处理的rune类型的字符,函数会将rune类型的字符以unicode码的形式转换成Ascii码,并将转换结果以byte类型的数据装入dst切片中去,最终返回dst切片。
使用方法
演示一下怎样用 golang的 strconv.AppendQuoteRuneToASCII() 函数。
package main
import (
"fmt"
"strconv"
)
func main() {
s := make([]byte, 0, 100)
r := 'a'
s = strconv.AppendQuoteRuneToASCII(s, r)
fmt.Println(string(s))
}
代码运行结果:
$ go run strconv_appendquoterunetoascii.go
"a"
上述代码中,先是创建一个长度为0,预分配100个空间的byte类型slice s,然后定义一个rune类型的字符变量 r,并将其赋值为’a’。
接着使用 strconv 中的 AppendQuoteRuneToASCII 函数把字符 r 追加成已含改字符,且被六进制转义的形式,存入 slice s。
最后输出字符串s,即可看到出现了”a”。
注意事项
需要注意的是,此函数编码处理的字符集为 ASCII 字符集。因此,如果待转换的字符是 非 ASCII 字符,会被转换为 ASCII 码,并以转义字符的形式存储在切片中。
举个例子:
package main
import (
"fmt"
"strconv"
)
func main() {
s := make([]byte, 0, 100)
r := 'か'
s = strconv.AppendQuoteRuneToASCII(s, r)
fmt.Println(string(s))
}
运行结果:
$ go run strconv_appendquoterunetoascii.go
"\u304b"
举个奇妙的例子,具体请自行思考一下以下代码:
package main
import (
"fmt"
"strconv"
)
func main() {
type Text struct {
Data string `json:",omitempty"`
}
txt := new(Text)
txt.Data = `全嬤的蛋黄酥"
b := make([]byte, 0, len(txt.Data))
b = strconv.AppendQuoteRuneToASCII(b, '"')
fmt.Println(string(b))
}
结论
通过本文可以发现,strconv.AppendQuoteRuneToASCII() 函数可以将一个字符按照其 ASCII 码的形式存储到 byte 切片中,十分实用。对于 ASCII 字符不需要额外转义,对于非ASCII字符,需要通过转义形式输出。如果不了解这个函数的作用也可以到 GoLang 的官方API中阅读相关文档,快速地上手此函数。
极客笔记