go - 2.2 基本数据类型和字符串string
一. 整型
1. 整型
1. 无符号 1)int8 1 个字节 -128-127 2)int16 2个字节 3)int32 4) int64 2. 有符号 略
2. 常用整型
1. int 有符号。跟随系统,系统是32位的,int就是int32,系统是64位的,int就是int64 2. uint 无符号的int,位数同int 3. rune 有符号,同int32,表示一个unicode码 4. byte 同uint8
3. 整型的使用细节
1. 整型分为有符号和无符号,int,uint的大小与系统有关 2. 整型默认声明为int型 3. 如何查看摸个变量的字节大小和数据类型 Printf() // 格式化输出 4. 使用过程中尽量在保证程序运行的情况下,使用占用空间小的数据类型
二. 浮点型
1. 单精度float32 2. 双精度float64(默认) 3. 浮点数都是有符号的 4. 浮点数可能造成精度损失,推荐使用float64
三. 字符类型
1. go中没有专门的字符类型,如果要存储单个字符(字母),一般使用byte来保存 2. go的字符串就是一串固定长度的字符连接起来的字符序列。 3. ASCII中的字符可以使用byte来保存 4. 如果字符对应的码值大于255(例如汉字),我们可以使用int类型 5. 直接使用fmt.Println()会打印字符的字符的长度,使用fmt.Printf("%c", m1)来打印字符
6. 字符常量使用单引号''括起来
7. go语言使用utf8编码
8. 字符类型是可以运算的,相当于一个整数,运算时是按照其对应的码值来运算的
四. 布尔类型
1. 布尔类型只有true和false
2. 布尔类型占一个字节
五. string 字符串
1. 字符串就是一串固定长度的字符连接起来的字符序列。go的字符串是由单个字节连接起来的 2. 字符串一旦赋值,就不能修改,go中字符串是不可变的 例: var str1 == "hello" str1[0] = 'a' // 报错 3. 字符串的两种表示形式 1)双引号 2)反引号(~键),相当于Python中的三引号 4. 字符串拼接方式使用 + 号 5. 多行字符串拼接时,+号要留在上一行 "hello" + "world" + "nice" + "to" + "meet" + "you"
六. 数据类型的转换
1. 基本数据类型之间的转换
1. go在不同类型的变量之间赋值时需要显示转换,go的数据类型不能自动转换 1. go中,数据类型的转换可以从表示范围小-->表示范围大,也可以从范围大-->范围小 2. 被转换的是变量存储的数据(即值),变量本身的数据类型并没有变化!(目前我的理解是,一个变量对应一块内存空间) 3. 在转换中,比如将int64 转成int8 ,编译时不会报错,只是转换的结果是按溢出处理,和我们希望的结果不一样,因此转换时要注意考虑范围 var a int 32 = 10 var b int64 = a + 12 // 错误,a是int32,加12之后还是int32
2. 基本数据类型和string之间的转换
1. func Srintf 参数需要和表达式的数据类型相匹配 例: func main(){ var num1 int = 99 var num2 float64 = 23.5 var b bool = true var mychar = 'h' var str string str = fmt.Sprintf("%d", num1) str = fmt.Sprintf("%f", num2) str = fmt.Sprintf("%f", b) str = fmt.Sprintf("%c", mychar) } 2. 使用strconv包的函数
1) 将一个基本数据类型转为字符串 str = strconv.FormatInt(num2, 10) // 默认是将64位整数转为字符串 str = strconv.FormatFloat(num4, 'f', 10, 64) // 小数后10位,float64 str = strconv.FormatBool(b2)
2)将字符串转为基本数据类型
strconv.ParseInt(), strconv.ParseFloat(),strconv.ParseBool()