20221105-golang-run数据类型

1
2
3
4
5
6
7
8
9
10
11
package main

import "fmt"

func main() {

var str = "hello 你好"
fmt.Println("len(str):", len(str))

}

golang 中的string 底层是通过byte 数组实现的,中文字符在unicode 下占2个字节,在utf-8 编码下占3个字节,而golang 默认编码正好是utf-8

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

package main

import (
"fmt"
"unicode/utf8"
)

func main() {

var str = "hello 你好"

//golang中string底层是通过byte数组实现的,座椅直接求len 实际是在按字节长度计算 所以一个汉字占3个字节算了3个长度
fmt.Println("len(str):", len(str))

//以下两种都可以得到str的字符串长度

//golang中的unicode/utf8包提供了用utf-8获取长度的方法
fmt.Println("RuneCountInString:", utf8.RuneCountInString(str))

//通过rune类型处理unicode字符
fmt.Println("rune:", len([]rune(str)))
}

golang 中的byte 数据类型与rune 相似,它们都是用来表示字符类型的变量类型,它们的不同在于

byte 等同于 int8 常用来处理ascii 字符

rune 等同于int32 常用来处理unicode 或utf-8字符

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2015-2024 TeX_baitu
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~