go语言基础语法- 字符和字节-字符串

本文探讨了Go语言中byte和uint8类型的相同之处,以及它们在ASCII字符表示和Unicode字符编码上的应用。通过实例展示了字符串、字节串编码解码过程,并讲解了如何正确处理中文字符。重点在于字符与字节的关系及字符串操作技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

byte就是字节的意思,一个字节就是8个二进制位。uint8,无符号整形,占8位,正好也是2的8次方。所以byte和 uint8 类型本质上没有区别,它表示的是 ACSII 表中的一个字符。

go语言的字符和字节

测试byte和unit8的区别,本身是没有区别的

package main

import "fmt"

func main() {
	var x uint8
	x = 255
	fmt.Println(x)

	var y byte

	y = 255

	fmt.Println(y)

	var a byte
	a = 'A'   
	//必须是单引号
	fmt.Println(a)

	fmt.Printf("%c : %d", a, a)
}

package main

import "fmt"

func main() {
	var x uint8
	x = 255
	fmt.Println(x)

	var y byte

	y = 255

	fmt.Println(y)

	var a rune
	a = '国'
	//rune,占用四个字符,工32位比特位,所以他和int32本质上也没有区别,他表示的是一个unicode字符
	fmt.Println(a)

	fmt.Printf("%c : %d", a, a)
}

在这里插入图片描述

字符串和字节串(熟练掌握)

字节数组,就是一个数组,里面的每一个元素是字符,字符又跟字节划等号,所以字符串和字节串可以相互转换。

字符串与字节串之间的转换

这也是个编码和解码的过程

package main

import (
	"fmt"
	"reflect"
)

func main() {
	var s = "中国"

	fmt.Println(s, reflect.TypeOf(s))
	// 下面是编码
	y := []byte(s)
//[228 184 173 229 155 189] 
//中国两个字符,需要六个字节来存储, 中是 228,184,173

	fmt.Println(y, reflect.TypeOf(y))  // [] uint8
}
// 下面是解码
fmt.Println(string(b)   //中国

执行结果:
在这里插入图片描述

字符串的遍历

(2种方式)for 和range

package main

import "fmt"

func main() {
	var name = "itlaoxin is  me "
	for i := 0; i < len(name); i++ {

		fmt.Println(name[i]) //这样取出来的是数字
		//解码
		fmt.Println(string(name[i]))
		fmt.Printf("%c"name[i])

	}
}

如果name = " i am 老辛" 这种会出现什么问题呢?

答: 这个时候,如果我们用for循环遍历,以为一个中文是三个字符,所以会出现乱码,这时候就需要使用range

方法二:

package main

import "fmt"

func main() {
	name := "i am 老辛"
	for _, v := range name {

		fmt.Println(string(v))
	}
}

在这里插入图片描述

go语言中的字符串字符不可以修改

package main

import "fmt"

func main() {
	name := "i am 老辛"
	fmt.Println(name[0])
	name[0] = "m"  // 可以看到不允许修改
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

互联网老辛

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值