代码改变世界

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计算机中基本存储单元。