go 学习之数据类型
2020-12-17 15:14 Caoxt 阅读(98) 评论(0) 编辑 收藏 举报数据类型:基本数据类型和派生(复杂数据类型)
基本数据类型:数值型,字符型,布尔型,字符串(string)
复杂数据类型:指针,数组,结构体,管道,函数,切片,接口
int8(1字节)(-128~127),
int16(2字节)(-2/15~2/15-1),
int32(4字节)(-2/31~2/31-1),
int64(8字节)(-2/63~2/63-1)
32位系统,int默认采用int32类型
64位系统,int默认采用int64类型
浮点型:单精度(float32),双精度(float64)
浮点数都是有符号的,尾数部分可能丢失,造成精度损失,float64要比float32更加准确(通常情况下使用)
浮点类型有固定的范围和字符长度,不受具体OS的影响,默认声明float64,
两种表示法:
十进制:5.12,.512
科学计数法形式,如5.1234e2(5.1234*10的2次方),5.1234E-2(5.1234/10的2次方)
rune 占用存储空间同int32,表示一个Unicode码
byte 占用存储空间等同于uint8,当要存储字符时选用byte(可存数字)
字符常量是用单引号括起来的单个字符,如:i := 'a'; i := '9'
在go中,字符的本质是一个整数,直接输出时,是该字符对应的UTF-8编码的码值
可以直接给某个变量附一个数字,热庵后按格式化输出时%c,会输出该数字对应的unicode字符
字符类型是可以进行运算的,相当于一个整数,因为他都对应有Unicode码
字符类型本质探讨:
存储:字符 -> 对应码值 -> 二进制 -> 存储
读取:二进制 -> 码值 -> 字符 ->读取
字符串
字符串一旦赋值了,字符串就不能修改了,在go中字符串是不可变的。
两种表示形式:
1.双引号,会识别转义字符
2.反引号,以字符串的原生形式输出,包括换行和特殊字符,可以防止攻击,输出源代码等效果。
当一行太长需要换行拼接时,“+”留在上一行
类型转换:
转换时将原值转换后的新值付给变量,原值未发生变化
float64转换成float8,多余的部分会按溢出丢弃处理,不会报错
基本数据类型转换成string,
1、fmt.Sprintf("%参数", 表达式),参数和表达式的类型要匹配;
2、使用strconv包
判断类型:
i := 4 fmt.Printf("i的类型:%T \n", i)
unsafe.sizeof()返回类型本身所占用的字节数,而非数据内容的字节数
bit 计算机中的最小存储单位,byte计算机中基本存储单元。