go语言中的字符
ASCII码值

在go中,定义字符使用单引号
字符在实际的项目中使用的并不多哈.
'' 单引号 → 只能括1个字符(rune),如果定义多个字符会报错的哈;
package main
import (
"fmt"
)
// 入口函数
func main() {
// 自定义一个字符a
var a ='a'
// 自定义一个字符a122
// var a1 ='a122' //会报错的哈
// 输出a的 ASCII码值
fmt.Printf("%v\n", a)
// 输出a的类型 int32
fmt.Printf("%T", a)
}
在go中,定义字符串使用双引号,不能使用单引号,否则会报错
Go语言的字符有以下两种:
uint8类型,或者叫 byte 型,代表了ASClI码的一个字符。
rune类型,代表一个UTF-8字符。
当需要处理中文、日文或者其他复合字符时则需要用到rune类型。
rune类型也可以去处理 byte类型的数据, rune 类型比较强大。
rune类型实际是一个int32。
定义一个字符串输出里面的字符
package main
import (
"fmt"
)
// 入口函数
func main() {
// 自定义一个字符串
var str = "'hello world"
// // 输出a的 ASCII码值 104
fmt.Printf("%v\n", str[1])
// 输出: uint8
fmt.Printf("%T", str[1])
}
go中,一个汉字占用3个字节,因为汉字使用的是UTF-8编码。
go中,一个字母占用1个字节,因为字符使用的是ASClI码。
go中,自定义字符使用单引号[很重要]
查看字符串所占用的字节数 len(str)
len(s) 返回的是字符串底层字节的长度,即 UTF-8 编码后的字节数,不是字符个数。
package main
import (
"fmt"
)
// 入口函数
func main() {
// 自定义一个字符串
var str = "hello你好"
// 输出字符串的字节数是 11
fmt.Printf("%v\n", len(str))
}
定义一个字符;字符是int类型
go中汉字使用的是UTF-8编码,编码后的值是int类型。
package main
import (
"fmt"
)
// 入口函数
func main() {
// 自定义一个字符,使用单引号
var a = '国'
//值:22269, 类型:int32
fmt.Printf("值:%v, 类型:%T\n", a, a)
}
这种循环会出现问题
如果字符串全部都是字母;可以使用下面的方式进行循环。
如果字符串中包含中文,循环就会出现问题。
package main
import (
"fmt"
)
// 入口函数
func main() {
// 自定义一个字符
var str = "你好go"
// 循环输出字符串中的每个字符,推荐使用range循环
for i :=0;i<len(str);i++{
v := str[i]
fmt.Printf("值:%c\n", v)
}
}

循环输出字符串【推荐使用range循环】
package main
import (
"fmt"
)
// 入口函数
func main() {
// 自定义一个字符
var str = "你好go"
// 循环输出字符串中的每个字符,推荐使用range循环
for _, v := range str {
// 值:你
// 值:好
// 值:g
// 值:o
fmt.Printf("值:%c\n", v)
}
}

修改字符串
要修改字符串,需要先将其转换成[]rune或[]byte,完成后再转换为string。
无论哪种转换,都会重新分配内存,并复制字节数组。
修改字符串(1)
package main
import (
"fmt"
)
// 入口函数
func main() {
// 修改字符串
str := "big"
// 先将字符串转换为[]byte类型
byteStr := []byte(str)
// 修改字符串,这样只能修改为字母;修改为中文会报错
// byteStr[0] = '中' // 报错
byteStr[0] = 'p'
// 再将[]byte类型转换为string类型
fmt.Println(string(byteStr)) // pig
}
修改字符串(2)
在 Go 中,string 不能直接赋值给 rune,类型不匹配,所以编译无法通过。
package main
import (
"fmt"
)
// 入口函数
func main() {
// 修改字符串
str := "big"
// 先将字符串转换为[]rune类型
runeStr := []rune(str)
// 修改字符串
runeStr[0] = '中' // ok
// 报错;在 Go 中,string 不能直接赋值给 rune,类型不匹配,所以编译无法通过。
runeStr[1] = "A" // 编译错误
// 再将[]rune类型转换为string类型
fmt.Println(string(runeStr)) // 中文big
}
修改字符串(3)
'' 单引号 → 必须且只能括 1个 字符(rune)
[]rune 切片中的每个元素只能装 1个 字符,不能把多个字符塞进一个索引里。
package main
import (
"fmt"
)
// 入口函数
func main() {
// 修改字符串
str := "big"
// 先将字符串转换为[]rune类型
runeStr := []rune(str)
// '' 单引号 → 必须且只能括 1个 字符(rune)。
// "" 双引号 → 括多个字符(string)。
// []rune 切片中的每个元素只能装 1个 字符,不能把多个字符塞进一个索引里。因此会报错
runeStr[0] = '中A' // 报错的原因
// 再将[]rune类型转换为string类型
fmt.Println(string(runeStr)) // 中文big
}
字符和字符串
组成每个字符串的元素叫做“字符",可以通过遍历字符串元素获得字符。
字符用单引号()包裹起来,如:
作者:流年少年
出处:https://www.cnblogs.com/ishoulgodo/
本文版权归作者所有,欢迎转载,未经作者同意须保留此段声明,在文章页面明显位置给出原文连接
如果文中有什么错误,欢迎指出。以免更多的人被误导。
出处:https://www.cnblogs.com/ishoulgodo/
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,或者关注博主,在此感谢!
万水千山总是情,打赏5毛买辣条行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主(っ•̀ω•́)っ✎⁾⁾!
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
支付宝
微信
如果文中有什么错误,欢迎指出。以免更多的人被误导。

浙公网安备 33010602011771号