本文发布于Cylon的收藏册,转载请著名原文链接~
先看代码
package main
import (
"fmt"
)
func main() {
var a = "hello world"
var b = "中"
fmt.Println([]rune(a))
fmt.Println([]rune(b))
fmt.Println([]byte(b))
}
go源码中的定义
// byte is an alias for uint8 and is equivalent to uint8 in all ways. It is
// used, by convention, to distinguish byte values from 8-bit unsigned
// integer values.
type byte = uint8
// 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
byte是uint8、rune为uint32,一个仅限于ascii码的值,一个支持更多的值。rune比byte能表达更多的数。
golang默认使用utf8编码,一个中文占用3字节,一个utf8数字占用1字节,utf8字母占用1字节
本文发布于Cylon的收藏册,转载请著名原文链接~
链接:https://www.oomkill.com/2018/12/golang-byte-and-rune/
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」 许可协议进行许可。