遇到不懂就搜搜,做个笔记好复习
Runes
字符串是字节的集合。我们可以使用 for 循环遍历字符串的字节:
package main
import "fmt"
func main() {
s := "我爱 Golang"
for _, v := range s {
fmt.Printf("Unicode code point: %U - character '%c' - binary %b - hex %X - Decimal %d\n", v, v, v, v, v)
}
}
复制代码
输出:
Unicode code point: U+6211 - character '我' - binary 110001000010001 - hex 6211 - Decimal 25105
Unicode code point: U+7231 - character '爱' - binary 111001000110001 - hex 7231 - Decimal 29233
Unicode code point: U+0020 - character ' ' - binary 100000 - hex 20 - Decimal 32
Unicode code point: U+0047 - character 'G' - binary 1000111 - hex 47 - Decimal 71
Unicode code point: U+006F - character 'o' - binary 1101111 - hex 6F - Decimal 111
Unicode code point: U+006C - character 'l' - binary 1101100 - hex 6C - Decimal 108
Unicode code point: U+0061 - character 'a' - binary 1100001 - hex 61 - Decimal 97
Unicode code point: U+006E - character 'n' - binary 1101110 - hex 6E - Decimal 110
Unicode code point: U+0067 - character 'g' - binary 1100111 - hex 67 - Decimal 103
复制代码
“我爱 Golang”,前两个字符是中文。
程序将遍历字符串的每个字符。在 for 循环中 v 的类型是rune
。rune
是一个内置类型,定义如下:
// rune is an alias for int32 and is equivalent to int32 in all ways. It is
// used, by convention, to distinguish character values from integer values.
type rune = int32
复制代码
一个Rune
代表一个 Unicode 码点。 - Unicode 代码点是数值。 - 按照惯例,它们总是用以下格式表示:“U+X”,其中 X 是代码点的十六进制表示。 X 应该有四个字符。 - 如果 X 少于四个字符,我们添加零。 - 例如:字符“o”的代码点等于 111(十进制)。十六进制的 111 写成 6F。十进制码点为 U+006F 要以常规格式打印代码点,你可以使用格式动词“%U”。
你也可以使用单引号来创建一个rune
:
package main
import "fmt"
func main(){
var aRune rune = 'Z'
fmt.Printf("Unicode Code point of '%c': %U\n", aRune, aRune)
}
来源-稀土掘金-Zioyi
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。