这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
基本变量与类型| 青训营笔记
(1)变量
1.变量引入
- 变量是其程序组成的基本单位
2.变量介绍
- 变量相当于内存中一个数据存储空间表示
3.变量使用步骤
- 1.声明
- 2.赋值
- 3.使用
package main
import "fmt"
func main() {
fmt.Println("变量的使用:")
//1.变量的声明
var age int
//2.变量的赋值
age = 18
//3.变量的使用
fmt.Println("age=", age) //用逗号做拼接
//声明和赋值可以合成一句
var age2 int = 18
fmt.Println("age2=", age2) //用逗号做拼接
//变量不能重复定义
//不可以在赋值的时候给与不匹配的类型
}
4.变量的使用形式
package main
import "fmt"
func main() {
fmt.Println("变量的使用形式....")
//1.第一种变量的使用方式 指定变量的类型,并且赋值
var num int = 18
fmt.Println("num=", num)
//2.第二种 指定变量的类型,但是不赋值 使用默认值
var num2 int
fmt.Println(num2)
//3.第三种 如果没有写变量的类型,那么根据等号后面的值进行判定变量的类型(自动类型判断)
var num3 = "tom"
fmt.Println(num3)
//4.第四种 省略var 注意:=,不能写为=
sex := "男"
fmt.Println(sex)
}
5.多变量的声明
package main
import "fmt"
// 全局变量:定义在函数外的变量
var n7 = 100
// 设计者认为上面的全局变量使用写法太麻烦了 可以一次性声明
var (
n9 = 500
n10 = "netty"
)
func main() {
//局部变量
fmt.Println("变量的使用形式....")
//1.第一种变量的使用方式 指定变量的类型,并且赋值
var num int = 18
fmt.Println("num=", num)
//2.第二种 指定变量的类型,但是不赋值 使用默认值
var num2 int
fmt.Println(num2)
//3.第三种 如果没有写变量的类型,那么根据等号后面的值进行判定变量的类型(自动类型判断)
var num3 = "tom"
fmt.Println(num3)
//4.第四种 省略var 注意:=,不能写为=
sex := "男"
fmt.Println(sex)
fmt.Println(".......")
//声明多个变量
var n1, n2, n3 int
fmt.Println(n1)
fmt.Println(n2)
fmt.Println(n3)
var n4, name, n5 = 10, "jack", 7.8
fmt.Println(n4)
fmt.Println(name)
fmt.Println(n5)
n6, height := 6.9, 100.6
fmt.Println(n6)
fmt.Println(height)
fmt.Println(n7)
fmt.Println(n9)
fmt.Println(n10)
}
(2)基本数据类型
1.变量的数据类型
2.整数类型
整数类型介绍
- 简单的说,就是用于存放整数值的,比如10,-45,6712等等
有符号整数类型
无符号整数类型
其他整数类型
- Golang的整数类型,默认声明为int类型
package main
import (
"fmt"
"unsafe"
)
func main() {
//定义一个整数类型
var num int8 = 23
fmt.Println(num)
var num3 = 28
//Printf函数的作用就是格式化的,把num3的类型填充到T上
fmt.Printf("num3的类型是:%T", num3) //int
fmt.Println()
fmt.Println(unsafe.Sizeof(num3)) //8
}
整数类型的选择
- Golang程序中整形变量在使用时,遵守保小不保大的原则,即在保证程序的正确运行下,尽量使用占用空间小的数据类型
3.浮点类型
浮点类型介绍
- 用于存放小数值得
浮点类型种类
- 底层存储与操作系统无关
- 浮点类型底层存储:符号位+指数位+尾数位,所以尾数只是存了一个大概,可能会出现精度损失
package main
import "fmt"
func main() {
fmt.Println()
//定义浮点类型的数据
var num1 float32 = 3.14
fmt.Println(num1)
//可以表示正浮点数 也可以表示负浮点数
//浮点数可以用十进制表示 也可以用十进制表示
//也可以用科学计数法表示 E大小写都行
var num2 float32 = -3.14
fmt.Println(num2)
var num3 float32 = 3.14e-2
fmt.Println(num3)
var num4 float32 = 3.14e+2
fmt.Println(num4)
var num5 float64 = 3.14e+2
fmt.Println(num5)
}
4.字符类型
- Golang中没有专门的字签类型,如果要存储单个字符(字母),一般使用byte来保存。
- Golang中字符使用UTF-8编码
package main
import "fmt"
func main() {
//定义字符类型的数据
//输出的是对应的ASCII码值
//汉字对应的是Unicode码值
//总结:Golang的字符对应的是utf-8编码(Unicode是对应的字符集,utf-8是Unicode其中的一种编码方案)
var c1 byte = 'a'
fmt.Println(c1)
var c2 byte = '6'
fmt.Println(c2)
var c3 byte = '('
fmt.Println(c3)
fmt.Println(c3 + 20)
var c5 byte = 'A'
//显示对应的字符 必须使用格式化输出
fmt.Printf("c对应的具体的字符为:%c", c5)
}
转义字符
\转义字符:将后面的字母表示为特殊含义
package main
import "fmt"
func main() {
//练习转义字符
//\n就是换行
fmt.Println("aaaa\nbbbb")
}
5.布尔类型
- 布尔类型也叫boolean类型,bool类型数据只允许取值true和false
- 布尔类型占1个字节
- 布尔类型适于逻辑运算,一般用于程序流程控制
package main
import "fmt"
func main() {
//测试布尔类型的数值:
var flag01 bool = true
fmt.Println(flag01)
var flag02 bool = false
fmt.Println(flag02)
}
6.字符串类型
介绍
- 字符串就是一串固定长度的字符连接起来的字符序列
package main
import "fmt"
func main() {
//1.定义一个字符串
var s1 string = "好好学习Golang"
fmt.Println(s1)
//2.字符串是不可变的,指的是字符串一旦定义好,其中字符的值不能改变
var s2 string = "abc"
s2 = "def"
fmt.Println(s2)
//3.字符串的表示形式
//(1)如果字符串中没有特殊字符,字符串的表示形式用双引号
var s3 string = "asdfasd\fasdf"
fmt.Println(s3)
//(2)如果有特殊字符,字符串的表示形式用反引号
fmt.Println(`fmt.Println(flag02)`)
//(3)完成字符串的拼接效果
// 当一个字符串过长的时候,可以分行 但是加号必须保留在上一行的最后
var s5 string = "abc" + "def"
fmt.Println(s5)
s5 += "hijk"
fmt.Println(s5)
}
7.基本数据类型默认值
- 在Golang中数据类型都有一个默认值,当程序员没有赋值的时,就会保留默认值
8.数据类型转换
显示转换
- Go在不同类型的变量之间赋值时需要显式转换,并且只有显式转换(强制转换)
- 语法:表达式T(w)将值v转换为类型T T:就是数据类型 V:就是需要转换的变量
package main
import "fmt"
func main() {
//进行类型转换
var n1 int = 100
//var n2 float32 = n1 这里必须显式转换
var n2 float32 = float32(n1)
fmt.Println(n1)
fmt.Println(n2)
//n1还是int类型 只是将n1的值转100转为了float32 而已 n1还是int类型
//将int64转为int8的时候 编译不会出错 但是会出现数据溢出
var n3 int64 = 888888
var n4 int8 = int8(n3)
fmt.Println(n4)
var n5 int32 = 12
var n6 int64 = int64(n5) + 30
fmt.Println(n5)
fmt.Println(n6)
}
基本数据类型和string转换介绍
-
需要将基本数据类型转换成string类型,或者将string类型转成基本数据类型
-
基本类型转string类型
- 方式1:fmt.Sprintf("%参数",表达式)
- 方式2:使用strconv包的函数
//方式一
package main
import (
"fmt"
)
func main() {
//方式1:fmt.Sprintf("%参数",表达式)
var n1 int = 19
var n2 float32 = 4.78
var n3 bool = false
var n4 byte = 'a'
var s1 = fmt.Sprintf("%d", n1)
fmt.Printf("s1对应的类型是:%T,s1=%v", s1, s1)
fmt.Println()
var s2 = fmt.Sprintf("%f", n2)
fmt.Printf("s2对应的类型是:%T,s2=%v", s2, s2)
fmt.Println()
var s3 = fmt.Sprintf("%t", n3)
fmt.Printf("s3应的类型是:%T,s3=%v", s3, s3)
fmt.Println()
var s4 = fmt.Sprintf("%c", n4)
fmt.Printf("s4应的类型是:%T,s4=%v", s4, s4)
}
//方式二
package main
import (
"fmt"
"strconv"
)
func main() {
//方式2:使用strconv包的函数
var n1 int = 18
var s1 string = strconv.FormatInt(int64(n1), 10) //参数 第一个参数必须转为int类型,第二个参数指定字面值的进制形式为十进制
fmt.Printf("s1对应的类型:%T,s1=%q\n", s1, s1)
//第二个参数 'f' 第三个参数9 保留小数点后面9位 第四个参数:表示小数时float64类型
var n2 float64 = 4.29
var s2 string = strconv.FormatFloat(n2, 'f', 9, 64)
fmt.Printf("s2对应的类型:%T,s2=%q\n", s2, s2)
}
String类型转为基本数据类型