一、布尔-非黑即白
大家好,给大家介绍一个地铁判官:布尔~bool!
该判官心里只有俩种结果,正义: true; 邪恶: false!
该判官出没于各大审判场所,伸张正义!!!
// bool
// 声明
var f bool = true
fmt.Println("f=", f)
// bool 类型只有俩种类型 true false
var a bool = false
var b bool = true
fmt.Println(a, b)
// bool 类型存储空间只占一个字节大小
var c bool = true
fmt.Println("bool类型存储空间大小=", unsafe.Sizeof(c))
bool存储只占一个字节大小,值只有俩种true、false. bool经常出现在if判断 for循环表达式等逻辑运算中,进行流程控制!!!
二、 字符串
字符串,真的是字符组成的一串数据吗?
在其它语言中,这个回答是:是的!
但在go中,这个答案是:错误的!!!go中字符串是由字节组成的一串数据,而字节对应的码值是整数!
1. 字符类型
go中没有专门的字符类型,如果要存储单个字符,一般使用byte保存,还记得之前分析整数类型的时候 byte是uint8的别名吗?
为什么可以用uint8进行存储字符,因为字符型的本质是:整数啊!!!
// 字符类型
// byte 存储的是[0-9,a-z,A-Z]的255以内的ASCII表的码值
var d byte = 'a'
fmt.Println("d=", d)
fmt.Printf("d=%c\n", d)
//d= 97
//d=a
// 超过255码值的使用int 存储utf-8表中的码值
var e int = '中'
fmt.Println("e=", e)
fmt.Printf("e=%c\n", e)
//e= 20013
//e=中
- 字符类型值为单引号引用
- 一个字母占1个字节,一个中文占3个字节
- 字符类型的本质是整数,直接输出时是数字
- 字符是数值,那么可以数值运算
- go统一编码额为utf-8
// 超过255码值的使用int 存储utf-8表中的码值
var e int = '中'
fmt.Println("e=", e)
fmt.Printf("e=%c\n", e)
//e= 20013
//e=中
var g int = '国'
fmt.Println("g=", g)
fmt.Printf("g=%c\n", g)
//g= 22269
//g=国
fmt.Println("result =", e+g)
// result = 42282
2. 字符串
go中字符串是由字节组成的一串固定长度的字符序列。其中字节使用的UTF-8编码标识的Unicode文本。
练习代码
// 字符串
var str string = "中华人民国和国 2025-09-03 举行盛大阅兵式"
fmt.Println("str=", str)
var s1 string = "hello"
// 声明后 不能进行重新赋值
//s1[0] = 'H'
fmt.Println("s1=", s1)
// 字符串会识别转义字符
var s2 string = "hello\nworld"
fmt.Println("s2=", s2)
// 原格式输出
var s3 string = `
尊敬的阅读者你好:
很高兴能在这里遇见你~
2025年6月24日
`
fmt.Println("s3=", s3)
// 字符串拼接
var s4 string = "hello" + "world"
fmt.Println("s4=", s4)
使用注意事项
- go中字符串使用UTF-8编码
- 字符串一旦赋值,后续不能更改
- 双引号会识别转义字符
- 反引号:原格式打印
- 字符串拼接,创建一个新的字符串
附
本次作业
- 熟练使用bool用在哪个场景
- 知道字符类型的原理
- 熟练使用字符串