基本变量与类型| 青训营笔记

101 阅读7分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天

基本变量与类型| 青训营笔记

(1)变量

1.变量引入

  • 变量是其程序组成的基本单位

2.变量介绍

  • 变量相当于内存中一个数据存储空间表示

uTools_1674815011007

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.变量的数据类型

uTools_1674817445966

2.整数类型

整数类型介绍

  • 简单的说,就是用于存放整数值的,比如10,-45,6712等等

有符号整数类型

uTools_1674820747014

无符号整数类型

uTools_1674820802019

其他整数类型

uTools_1674821641169

  • 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.浮点类型

浮点类型介绍

  • 用于存放小数值得

浮点类型种类

  • 底层存储与操作系统无关
  • 浮点类型底层存储:符号位+指数位+尾数位,所以尾数只是存了一个大概,可能会出现精度损失

uTools_1674823085323

 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)
 }

转义字符

\转义字符:将后面的字母表示为特殊含义

uTools_1674824939778

 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中数据类型都有一个默认值,当程序员没有赋值的时,就会保留默认值

uTools_1674826435477

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类型转为基本数据类型