相册管理网站模板下载,怎么做物流网站,沈阳自主建站模板,wordpress安装到跟目录下Golang中的rune类型是一个32位的整数类型(int32)#xff0c;它是用来表示Unicode码点的。rune类型的值可以是任何合法的Unicode码点#xff0c;它通常用来处理字符串中的单个字符。
在Golang中#xff0c;字符常量使用单引号来表示#xff0c;例如 a。使用单引号表示的字符…Golang中的rune类型是一个32位的整数类型(int32)它是用来表示Unicode码点的。rune类型的值可以是任何合法的Unicode码点它通常用来处理字符串中的单个字符。
在Golang中字符常量使用单引号来表示例如 a。使用单引号表示的字符常量是一个rune类型的值。
可以使用内置的rune函数将字符串转换为rune类型的切片。例如
str : Hello, 世界
runes : []rune(str)
fmt.Println(runes)
输出结果是
[72 101 108 108 111 44 114 117 110 101 19990 30028]
前面几位72101...与ascii码H e l l o的值一一对应
其实unicode与ascii都是字符串对应的计算机码用的Unicode是为了补充ascii的不足毕竟ascii码不包含中文) 可以使用内置的len函数获取rune类型切片的长度该长度表示字符串中的字符数量。例如
str : Hello, 世界
runes : []rune(str)
fmt.Println(len(str),len(runes))
输出结果分别是12与8
str : Hello, 世界
for i : 0; i 12; i {fmt.Printf(%c,str[i])
}
//输出结果Hello, ä¸ç
在输出中%c格式化动词用于打印rune类型的值将其表示为字符。
说明len(str)中文跟英文,所占的长度是不一样的中文占3个字节
而len(runes)返回的是字符串的个数 可以使用for循环遍历rune类型切片以便访问字符串中的每个字符。例如
for _, r : range runes {fmt.Printf(%c, r)
}输出结果为:Hello,世界
rune类型还可以转换成string类型,例如
var a rune a
fmt.Println(string(a))
var b []rune []rune{a,b}
fmt.Println(string(b))
需要注意的是因为rune类型是一个整数类型所以可以进行算术和逻辑操作。
package mainimport fmtfunc main() {// 算术操作r1 : Ar2 : asum : r1 r2diff : r1 - r2fmt.Printf(Sum: %c\n, sum)fmt.Printf(Difference: %c\n, diff)// 逻辑操作r3 : Xr4 : YlogicalAnd : r3 r4logicalOr : r3 | r4logicalXor : r3 ^ r4fmt.Printf(Logical AND: %c\n, logicalAnd)fmt.Printf(Logical OR: %c\n, logicalOr)fmt.Printf(Logical XOR: %c\n, logicalXor)
}
输出值都是乱码、或许在需要对称加密场景下可以使用?
rune类型与Byte类型对比:
package mainimport fmtfunc main() {var a rune 林fmt.Println(a)//26519var b rune afmt.Println(b)//97var c byte afmt.Println(c)//97//var d byte 林 //因为超出了值域会报错,byte类型是0-255//fmt.Println(d)} 总结rune 用于处理单个字符string 用于处理字符串byte 用于处理单个字节。