go语言里rune和byte
首先来看一个题目:
- 关于字符串拼接,下列正确的是? A. str := ‘abc’ + ‘123’ B. str := “abc” + “123” C. str := ‘123’ + “abc” D. fmt.Sprintf(“abc%d”, 123)
答案是: B D 解释: 双引号⽤来表示字符串 string,其实质是⼀个 byte 类型的数组,单引号表示 rune 类型。
rune byte
在Go语言中,rune和byte是处理字符和字符串的重要概念。
- rune(符文)是Go语言中表示Unicode字符的类型。它实际上是一个32位的整数类型,用于存储单个字符。 使用单引号(’)来表示一个rune值,例如:var r rune = ‘A’。rune类型可以用于处理各种字符,包括ASCII字符和非ASCII字符。
- byte(字节)是Go语言中表示二进制数据的类型,也可用于表示字符串的底层字节。 它实际上是一个8位的无符号整数类型,范围从0到255。使用byte类型可以处理字节数据、读取文件、网络通信等。 在字符串中,每个字符都由一个或多个字节组成。
数据结构
Rune和byte本身不是数据结构,而是Go语言中用于处理字符和字符串的类型。 数据结构是指在计算机科学中用于组织和存储数据的方式或方法。它们用于表示和操作数据,以支持特定的操作和算法。
在Go语言中,字符串可以被认为是一种数据结构。字符串是由一系列字节组成的不可变序列,可以通过索引访问和操作其中的字符。 由于字符串在Go语言中是不可变的,如果需要对字符串进行频繁的修改操作,可以使用字节切片(byte slice)作为可变的数据结构来代替。 除了字符串,Go语言还提供了许多内置的数据结构,如数组、切片、映射(map)、结构体(struct)和接口(interface)。 这些数据结构可以用于组织和存储不同类型的数据,并支持各种操作,如添加、删除、查找和排序。