数据类型分类
一、数据类型-基本数据类型
1、整数型(int、有符号(int8/1字节、int16/2字节、int32/4字节、int64/8字节)、无符号(uint、uint8、uint16、uint32、uint64))
int--根据系统位数自动定义,系统是32位,则为int32,系统是64位,则位int64
uint--根据系统位数自动定义,系统是32位,则为uint32,系统是64位,则位uint64
2、浮点型:由符号位+指数位+位数位组成,分为float32,float64
尾数位可能会丢失,造成精度损失,不受操作系统的影响,声明默认为64位
有两种显示方式:科学计数:534e3等价于534*10的3次方,534e-3等价于534/10的3次方,e不区分大小写;小数时前面0可不写
3、布尔型:只能是true,false,占用一个字节
4、字符串
字符:单引号括起来的单个字符,需要格式化输出,%c,否则输出字符码数,
utf-8英文1个字节,中文3个字节
存储:字符-对应码数-二进制-存储
读取:二进制-对应码数-字符-读取
字符串不可修改,双引号里有转义字符会被识别,反引号里不会识别里面的转移字符
5、格式化输出符号
%c:该值对应的unicode码值
%d:表示为十进制显示
%T:值的类型
%q:该值对应的双引号括起来的go语法字符串字面值
%f:显示小数
二、数据类型-派生数据类型
指针、数组、结构体、管道、函数、切片、接口、map
数据类型转换
一、int/float/bool/字符--转换成str,用fmt.sprintf进行转换,%q展示双引号括起来的字符串面值
var( num4 = 1 num5 = 3.44 char = 'w' bl = true str1 string ) //int-->>string str1 =fmt.Sprintf("%d",num4) fmt.Printf("str=%q",str1)
// float-->>string str1 = fmt.Sprintf("%f",num5) fmt.Printf("str=%q",str1) //str-->>sting str1 = fmt.Sprintf("%c",char) fmt.Printf("str=%q",str) //bool-->>string str1 = fmt.Sprintf("%t",bl) fmt.Printf("str=%q",str1)
二、str转int/float/bool,用strconv包的函数进行转换
注意事项:
1、使用strconv包的函数,先导入strconv包,会返回两个值,第一个是value,第二个是error,一个是报错,报错不需要用_忽略掉,%v-按原类型输出
2、string类型转基本数据类型能够转成有效数据
3、如将hello转成int,不会报错,直接显示默认值0
4、如将hello转成bool,不会报错,直接显示默认值false
5、ParseBool(变量名),(值,报错)
6、ParseInt(变量名,显示进制(10进制),多少位(int8/16/32/64)),(值-int64,报错)
7、ParseFloat(变量名,位数flaot32/64),(值float64,报错)
var( str2 = "true" b1 bool str3 = "122333" n1 int64 str4 = "23.33" n2 float64 ) //string转bool,%v是展示值的默认格式 b1,_ = strconv.ParseBool(str2) fmt.Printf("b=%v",b1) //string转int n1,_ = strconv.ParseInt(str3,10,64) fmt.Printf("n1=%v",n1) //string转float n2,_ = strconv.ParseFloat(str4,64) fmt.Printf("n2=%v",n2) }