Golang strconv.AppendQuoteRuneToASCII() 函数及示例

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中阅读相关文档,快速地上手此函数。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程