变量的概念
变量是程序的基本组成单位,相当于内存中一个数据存储空间的表示,通过变量名可以访问到变量值
sum , sub 都是变量
变量使用的基本步骤
1.声明变量(定义变量)
2.赋值
3.使用变量
声明变量:var 变量名 数据类型
var num1 float32表示一个单精度类型的小数,变量名是num1
初始化变量:在声明变量的时候就给值
var a int = 45 这就是初始化变量
使用细节,如果声明时就直接给值,可省略数据类型
var b = 40 / b := 40
给变量赋值:比如先声明变量:var num int //默认0
然后,再给值num = 780 ; 这就是给变量赋值
变量使用注意事项
1.变量表示内存中的一个存储区域
2.该区域有自己的名称(变量名)和类型(数据类型)
3.Golang变量使用的三种方式
1)指定变量类型, 声明后若不赋值,使用默认值
2)根据值自行判断变量类型(类型推导)
3)省略var,注意: =左侧的变量不应该是已经声明过的,否则会导致编译错误
4.多变量声明
在编程中, 有时我们需要一次性声明多个变量,Golang也提供这样的语法
5.全局变量的声明
在Go函数外定义的变量的声明
6.变量在某一区域的数据值可以在同一类型范围内不断变化
7.变量在同一个代码块内不能重名
8.变量=变量名+值+数据类型(变量三要素)
程序中+号的使用
1.当左右两边都是数值型时,做加法运算
2.当左右两边都是字符串类型时,则做字符串拼接
变量数据类型
基本数据类型
数值型i
整数类型int,int8,uint8,byte
浮点类型float32,float64
字符型(没有专门的字符型,使用byte来保存单个字母的字符)
布尔型bool
字符串string
派生/复杂数据类型
指针Pointer
数组
结构体(struct)
管道(channel)
函数(也是一种类型)
切片(slice)
接口(ineterface)
map
整数的各个类型
有符号的整数类型 int8 -2^7 ~ 2^7-1 ; rune范围与int32一样 4字节
无符号的整数类型 uint8 0 ~ 2^8-1 ; byte与unit8表示范围一样 8位
查看一个变量的数据类型
fmt.Printf(%T) 用于做格式化输出
整型变量在使用时,保小不保大原则,尽量使用小的数据类型
浮点型
用于存放小数
小数类型
1.单精度float32
2.双精度float64
说明
1.浮点数 = 符号位+指数位+尾数位,在储存过程中,精度可能会损失
2.尾数部分可能丢失,造成精度损失,-123.0000901
3.float64的精度比float32更高
细节
1.Golang的浮点有固定的范围和字段长度,不受OS影响
2.Golang浮点型默认为float64
3.浮点型常量有两种表示形式
十进制数形式,如:5.12 .512(必须有小数点)
科学计数法形式,如:5.12e2 = 5.12*10的2次方 5.12E-2 = 5.12/10的2次方
4.通常情况下,应该使用float64,因为它比float32更精确
字符类型
Golang中没有专门的字符类型。如果要存储单个字符(字号),一般使用byte来保存
字符串是遗传固定长度的字符连接起来的字符序列,Go的字符串时由单个字节连接起来的
传统的字符串是由字符组成的,go的字符串是由字节组成的
1.0-1 , A-Z可以直接保存到byte
2.保存字符对应码值大于255,这是我们可以考虑用int类型保存
3.以字符方式输出,需要格式化输出,即fmt.Printf("%c",c1)
细节
1.字符常量是用单引号('')括起来的单个字符,例如,
var c1 byte = 'a'
var c2 uint = '中'
2.Go中允许使用转义字符'\'来将其后的字符转变为特殊字符
3.Go语言的字符是UTF-8编码(包含ASCH码),英文字符1字节,汉字3字节
4.Go中,字符本质是一个整数
5.给某变量赋一个数字,然后按格式化输出%c,会输出unicode字符
6.字符类型可以进行运算,因为它们都有对应的Unicode码
布尔类型
1.也叫Bool类型,占用1个字节,只允许取值True和Faulse
2.适于逻辑运算,一般用于逻辑运算,一般用于程序流程控制
字符串类型string
字符串就是一串固定长度的字符连接起来的字符序列,Go的字符
细节
Go语言的字符串一旦赋值了,字符串就不能修改了
双引号 会识别转义字符
反引号 以字符串的原生形式输出,包括换行和特殊字符,可以防止被攻击
string使用的注意事项
多个字符串拼接时,加号保留在上一行
Golang中基本数据类型的默认值(0值)
所有数据类型都有一个默认值
当程序员没有赋值时,就会保留这个默认值
Go这个默认值又叫0值
整型 0
浮点型 0
字符串 ”“
布尔型 Faulse(不使用0/1)
%v表示按照变量得到原始值输出
基本数据类型的转换
Golang与JAVA/C不同,Golang在不同类型的变量之间赋值时需要显式转换
也就是Golang中数据类型不能自动转换
基本语法
表达式T(v),T:数据类型 v:要转换的变量
细节说明
1.被转换的时变量存储数据(即值),变量本身的数据类型并没有变化
2.可以时范围小转大,也可以时大转小
3.将int64转换为int8,若超出,编译时不会报错,转换时会溢出。在转换时候需要考虑范围问题
基本数据类型和string的转换
在程序开发中,我们经常将基本数据类型与string类型相互转换
基本数据类型转string
fmt.Sprintf(%f 表达式
使用strconv函数
基本数据类型转string类型
go标准库文档Go库文档 (studygolang.com)
如Sprintf根据format参数生成格式化的字符串
string类型转基本数据类型
使用时strconv包
//1.strconv.ParseBool(str)函数会返回两个值(value bool, err error)
//2.因为我只想获取到value bool ,不想获取err所以我使用,_忽略
使用strconv的函数
fmt.ParseBool(str string)
接收返回的类型和字节
在将string类型转成基本数据类型时,要确保string类型能够转成有效的数据
比如可以把”123“转成一个整数,但是不能把”hello"转成一个整数,会输出默认值