GO-学习-07-基本数据类型-byte和rune

组成每个字符串的元素叫做字符,可以通过遍历字符串元素获得字符,字符用单引号’ '定义
Go 语言的字符有以下两种:
1.Uint8类型,或者叫字节(Byte)型,代表了ascii码的一个字符。
2.符文rune类型,代表一个UTF-8字符。
当需要处理中文、日文或者其他复合字符时,则需要用到rune类型。符文类型实际是一个int32。
Go使用了特殊的符文类型来处理Unicode(Unicode),让基于Unicode的文本处理更为方便也可以使用字节(Bvte)型进行默认字符串处理,性能和扩展性都有照顾。

package main
func main(){
		//1.定义,字符属于int型
		var a = 'a'  
		fmt.Printf("值:%v,类型%T",a,a) //97,int32    a对应的码值
		//2.原样输出
		var b = 'b'  
		fmt.Printf("值:%c,类型%T",b,b) //b,int32    	
		//定义一个字符串
		var str = "ihan"
		fmt.Printf("码值:%v,原样输出%c,类型%T",str[0],str[0],str[0])   //105     i   uint8		
		
		//一个汉字占用 3个字节(utf-8)  一个字母占用一个字节
		//unsafe.Sizeof()  不能用于string类型,底层决定的   可以使用len()
		var str1 = "ihan"
		fmt.Println(len(str1))  //4
		var str2 = "你好ihan"  //10
		//汉字  使用utf-8编码   字母使用ASCII编码
		var str3 = '国'
		fmt.Printf("值:%v,类型%T",str3 ,str3 ) //22269,int32 

		//输入每一个字符
		str:="ihan"  //全是字母
		for i := 0; i<len(str); i++ {    //byte
			fmt.Printf("%v,%c",str[i],str[i])
		}
		
		str:="你好ihan"  //混合
		for _, r := range str {   //range 把byte类型转换为rune
			fmt.Printf("%v,%c",r ,r )
		}

		
		
		
		

}

修改字符串
要修改字符串,需要先将其转换成[]rune 或[]byte,完成后再转换为 string。无论哪种转换,都会重新分配内存,并复制它节数组。

func changeString(){
	s1 : "big"
	//强制类型转换
	byteS1 := []byte(s1)
	byteS1[0]= 'p'
	fmt.Printin(string(byteS1))  //pig
	
	s2 :=“白萝卜"
	runeS2 := []rune(s2)
	runeS2[0]='红'
	fmt.Println(string(runeS2))  //红萝卜

Go语言中的字符是Unicode字符,使用rune类型表示。一个rune可以是任何Unicode字符,包括字母、数字、符号等。字符的值可以通过单引号包裹,例如 ‘a’、‘1’、'中’等。

在字符串中,每个字符都占用一个或多个字节的内存空间,具体取决于字符的编码方式。Go语言中默认使用UTF-8编码,一个英文字符占用1个字节,一个中文字符占用3个字节。

可以使用len()函数获取字符串的字节数,使用utf8.RuneCountInString()函数获取字符串的字符数。可以使用[]rune将字符串转换为rune切片,每个元素表示一个字符。

Go语言还提供了一些处理字符的内置函数,如strings包中的Contains()、Index()、Split()等,可以更方便地操作字符串中的字符。

ASCII(American Standard Code for Information Interchange)和UTF-8(Unicode Transformation Format 8-bit)是两种字符编码方式。

ASCII是一种最常见的字符编码方式,它使用一个字节(8位)来表示一个字符,共有128个字符,包括英文字母、数字和一些常见的标点符号。ASCII编码是由美国国家标准学会(ANSI)于1963年定义的,主要用于英语和其他西方语言。

UTF-8是一种可变长度的字符编码方式,它可以使用1个到4个字节来表示一个字符。UTF-8编码可以表示几乎所有的字符,包括ASCII字符和几乎所有的国际字符。UTF-8编码是Unicode字符编码标准的一种实现方式。

与ASCII相比,UTF-8具有更广泛的字符表示能力,可以支持全球各种语言的字符。因此,在多语言环境下,UTF-8通常被更广泛地使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值