1.1 字符类型
1.1.1 基本介绍
Golang 中没有专门的字符类型,如果要存储单个字符(字母),一般使用byte 来保存。 字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。也
就是说对于传统的字符串是由字符组成的,而Go 的字符串不同,它是由字节组成的。
1.1.2 案例演示
//演示golang中字符类型使用
func main(){
var c1 byte = 'a'
var c2 byte = '0'//字符的0
//当我们直接输出byte值,就是输出了对应的字符码值
//'a' ==》
fmt.Printf("c1=%c c2=%\n",c1,c2)
//var c3 byte = '北'//overflow溢出
var c3 int = '北'//voerflow溢出
fmt.Printf("c3=%c c3对应码值=%d",c3,c3)
}
对上面代码说明
- 如果我们保存的字符在ASCII 表的,比如[0-1, a-z,A-Z..]直接可以保存到byte
- 如果我们保存的字符对应码值大于255,这时我们可以考虑使用int 类型保存
- 如果我们需要安装字符的方式输出,这时我们需要格式化输出,即 fmt.Printf(“%c”, c1)..
1.1.3 字符类型使用细节
-
字符常量是用单引号('')括起来的单个字符。例如:
var c1 byte = 'a' var c2 int = '中' var c3 byte ='9' -
Go 中允许使用转义字符 '\’来将其后的字符转变为特殊字符型常量。例如:
var c3 char= ‘\n’ // '\n'表示换行符 -
Go 语 言 的 字 符 使 用 UTF-8 编 码 , 如 果 想 查 询 字 符 对 应 的 utf8 码 值
www.mytju.com/classcode/t…
英文字母-1 个字节 汉字-3 个字节
-
在Go 中,字符的本质是一个整数,直接输出时,是该字符对应的UTF-8 编码的码值。
-
可以直接给某个变量赋一个数字,然后按格式化输出时%c,会输出该数字对应的unicode 字符
//可以直接给某个变量赋值一个数字,然后按照格式化输出时%c,会输出数字对应的Unicode字符 var c4 int =22269//22269 ->'国' 120->'x' fmt.Printf("c4=%c\n",c4) -
字符类型是可以进行运算的,相当于一个整数,因为它都对应有Unicode 码.
1.1.4 字符类型本质探讨
- 字符型 存储到 计算机中,需要将字符对应的码值(整数)找出来
存储:字符--->对应码值---->二进制-->存储
读取:二进制----> 码值 ----> 字符 --> 读取
- 字符和码值的对应关系是通过字符编码表决定的(是规定好)
- Go 语言的编码都统一成了utf-8。非常的方便,很统一,再也没有编码乱码的困扰了
2.1 布尔类型
2.1.1 基本介绍
- 布尔类型也叫bool 类型,bool 类型数据只允许取值true 和false
- bool 类型占1 个字节。
- bool 类型适于逻辑运算,一般用于程序流程控制[注:这个后面会详细介绍]:
Ø if 条件控制语句;
Ø for 循环控制语句
2.1.2 案例演示
func main(){
var b =false
fmt.Printf("b=",b)
//注意事项
//1.bool类型占用存储空间时一个字节
fmt.Printf("b的占用空间=",unsafe.Sizeof(b))
}
3.1 string 类型
3.1.1 基本介绍
字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用UTF-8 编码标识Unicode 文本
3.1.2 案例演示
func main(){
//String的的基本使用
var address string ="北京长城 110 hello world!!!"
fmt.Printf(address)
}
3.1.3 string 使用注意事项和细节
- Go 语言的字符串的字节使用UTF-8 编码标识Unicode 文本,这样Golang 统一使用UTF-8 编码,中文 乱码问题不会再困扰程序员。
- 字符串一旦赋值了,字符串就不能修改了:在Go 中字符串是不可变的。
- 字符串的两种表示形式
(1) 双引号, 会识别转义字符
(2) 反引号,以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果
- 字符串拼接方式
- 当一行字符串太长时,需要使用到多行字符串,可以如下处理
4.1 基本数据类型的默认值
4.1.1 基本介绍
在go 中,数据类型都有一个默认值,当程序员没有赋值时,就会保留默认值,在go 中,默认值
又叫零值。
4.1.2 基本数据类型的默认值如下
案例:
5.1 基本数据类型的相互转换
5.1.1 基本介绍
Golang 和java / c 不同,Go 在不同类型的变量之间赋值时需要显式转换。也就是说Golang 中数
据类型不能自动转换。
5.1.2 基本语法
表达式 T(v) 将值 v 转换为类型 T
T: 就是数据类型,比如 int32,int64,float32 等等
v: 就是需要转换的变量
5.1.3 案例演示
5.1.4 基本数据类型相互转换的注意事项
- Go 中,数据类型的转换可以是从 表示范围小-->表示范围大,也可以 范围大--->范围小
- 被转换的是变量存储的数据(即值),变量本身的数据类型并没有变化!
- 在转换中,比如将 int64 转成 int8 【-128---127】 ,编译时不会报错,只是转换的结果是按 溢出处理,和我们希望的结果不一样。 因此在转换时,需要考虑范围.