基本数据类型

本文详细介绍了Golang中的基本数据类型(如变量、整数、浮点数、字符、布尔值),包括它们的声明、赋值、使用、类型转换以及进制转换方法。此外,还探讨了默认值的概念以及如何在不同数据类型间进行转换。
摘要由CSDN通过智能技术生成

变量

【1】变量的引入:
一个程序就是一个世界
不论是使用哪种高级程序语言编写程序,变量都是其程序的基本组成单位

【2】变量的介绍:
变量相当于内存中一个数据存储空间的表示
学生的年龄–数据–变量
var age int=18

【3】变量的使用步骤:
1.声明
2.赋值
3.使用

【4】代码练习

package main
import "fmt"

func main(){
	//1.变量的声明
	var age int
	//2.变量的赋值
	age=18
	//3.变量的使用
	fmt.Println("age =",age);
	//声明和赋值可以合成一句:
	var age2 int=19
	fmt.Println("age2=",age2);

	// var age int=20;	
	// fmt.Println("age =",age);

	/*变量的重复定义会报错:
	# command-line-arguments 
	.\main.go:16:6:age redeclared in this block
	    previous declaration at.\main.go:6:6
	*/

	//不可以在赋值的时候给与不匹配的类型
	var num int = 12.56
	fmt.Println("num =",num);
}

【5】变量的4种使用方式:

package main
import "fmt"

func main(){
	//第一种:变量的使用方式:指定变量的类型,并且赋值,
	var num int= 18
	fmt.Println(num)

	//第二种:指定变量的类型,但是不赋值,使用默认值
	var num2 int
	fmt.Println(num2)

	//第三种:如果没有写变量的类型,那么根据=后面的值进行判定变量的类型(自动类型推断)
	var num3="tom"
	fmt.Println(num3)

	//第四种:省略var,注意 :=不能写为 =
	sex:="男"
	fmt.Println(sex)
}

在这里插入图片描述

【6】支持一次性声明多个变量:

	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)

在这里插入图片描述
全局变量与局部变量
在这里插入图片描述

数据类型介绍

在这里插入图片描述

进制和进制转换

【1】进制的介绍:
十进制整数,如:99,-500,0
八进制整数,要求以0开头,如:015
十六进制数,要求0x或0×开头,如:0x15
二进制:要求0b或者0B开头,如:0b11
几进制:就是逢几进1的问题:
平时实际生活中用的最多的是:十进制
计算机用二进制最多

【2】二进制转换为十进制:
二进制:1101
在这里插入图片描述

【3】十进制转换为二进制:
十进制13
在这里插入图片描述

【4】八进制转换十进制:
八进制:16
在这里插入图片描述

【5】十进制转换为八进制:
十进制14:
在这里插入图片描述

【6】八进制转换为十六进制:
把十进制当做一个中转站:
八进制----》十进制----》十六进制
实际上根本不用自己转换这么麻烦:我们可以直接用系统中提供给我们的计算器:

在这里插入图片描述

整数类型

【1】整数类型介绍:
简单的说,就是用于存放整数值的,比如10,-45,6712等等。

【2】有符号整数类型:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
代码测试超出范围

在这里插入图片描述

【3】无符号整数类型:
在这里插入图片描述
表数范围的边界计算:
11111111=2^7+127=128+127=255
00000000=0

超出边界报错:
在这里插入图片描述

【4】其他整数类型:
在这里插入图片描述
PS:Golang的整数类型,默认声明为int类型

在这里插入图片描述
PS:变量占用的字节数:
在这里插入图片描述
引包的简便写法
在这里插入图片描述

【5】这么多整数类型,使用的时候该如何选择呢?
Golang程序中整型变量在使用时,遵守保小不保大的原则,
即:在保证程序正确运行下,尽量使用占用空间小的数据类型

浮点类型

【1】浮点类型介绍:
简单的说,就是用于存放小数值的,比如3.14、0.28、-7.19等等。

【2】浮点类型种类:
在这里插入图片描述
PS:底层存储空间和操作系统无关
PS:浮点类型底层存储:符号位+指数位+尾数位,所以尾数位只是存了一个大概,很可能会出现精度的损失。

【3】代码:
在这里插入图片描述
在这里插入图片描述

字符类型

【1】Golang中没有专门的字符类型,如果要存储单个字符(字母),一般使用byte来保存。
【2】Golang中字符使用UTF-8编码
【3】ASCII码表:
左面是不可见字符右面是可见字符
请添加图片描述
【4】查看UTF-8编码表:
http://www.mytju.com/classcode/tools/encode_utf8.asp
在这里插入图片描述
【5】代码:

package main
import "fmt"

func main(){
	//定义浮点类型的数据:
	var c1 byte ='a'
	fmt.Println(c1)//97
	var c2 byte='6'
	fmt.Println(c2)//54
	var c3 byte='('
	fmt.Println(c3+20)//40
	//字符类型,本质上就是一个整数,也可以直接参与运算,输出字符的时候,会将对应的码值做一个输出
	//字母,数字,标点等字符,底层是按照ASCII进行存储。

	var c4 int='中'
	fmt.Println(c4)
	//汉字字符,底层对应的是unicode码值
	//对应的码值为20013,byte类型溢出,能存储的范围:可以用int
	//总结:Golang的字符对应的使用的是uTF-8编码(Unicode是对应的字符集,UTF-8是Unicode的其中的一种编码方案)

	var c5 byte = 'A'
    //想显示对应的字符,必须采用格式化输出
    fmt.Printf("c5对应的具体的字符为:%c",c5)
}

在这里插入图片描述

【6】转义字符:

\转义字符:将后面的字母表示为特殊含义
在这里插入图片描述

package main
import "fmt"

func main(){
	//练习转义字符:
	//\n换行
	fmt.Println("aaa\nbbb")
	//\b退格
	fmt.Println("aaa\bbbb")
	//\r光标回到本行的开头,后续输入就会替换原有的字符
	fmt.Println("aaaaa\rbbb")
	//\t制表符
	fmt.Println("aaaaaaaaaaaaa")
	fmt.Println("aaaaa\tbbbbb")
	fmt.Println("aaaaaaaa\tbbbbb")

	//\"
	fmt.Println("\"Golang\"")
}

在这里插入图片描述

布尔类型

【1】布尔类型也叫bool类型,bool类型数据只允许取值true和false
【2】布尔类型占1个字节。
【3】布尔类型适于逻辑运算,一般用于程序流程控制
【4】代码:

package main
import "fmt"

func main(){
	//测试布尔类型的数值:
	var flag01 bool=true
	fmt.Println(flag01)

	var flag02 bool=false
	fmt.Println(flag02)

	var flag03 bool=5<9
	fmt.Println(flag03)
}

布尔类型

【1】介绍:
字符串就是一串固定长度的字符连接起来的字符序列。

【2】字符串的使用:

package main
import "fmt"

func main(){
	//1.定义一个字符串:
	var s1 string="你好陌生人"
	fmt.Println(s1)
	//2.字符串是不可变的:指的是字符串一旦定义好,其中的字符的值不能改变
	var s2 string ="abc"
	//s2="def"
	//s2[0]='t'
	fmt.Println(s2)

	//3.字符串的表示形式:
	//(1)如果字符串中没有特殊字符,字符串的表示形式用双引号
	//var s3 string="asdfasdfasdf"
	//(2)如果字符串中有特殊字符,字符串的表示形式用反引号
	var s4 string =`
	package main
	import "fmt"

	func main(){
	    //测试布尔类型的数值:
	    var flag01 bool=true
	    fmt.Println(flag01)

	    var flag02 bool=false
	    fmt.Println(flag02)

	    var flag03 bool=5<9
	    fmt.Println(flag03)
	}
	`
	fmt.Println(s4)

	//4.字符串的拼接效果:
	var s5 string ="abc"+"def"
	s5+="hijk"
	fmt.Println(s5)

	//当一个字符串过长的时候:注意:+保留在上一行的最后
	var s6 string="abc"+"def"+"abc"+"def"+"abc"+"def"+"abc"+
	"abc"+"def"+"abc"+"def"+"abc"+"def"+"abc"+"def"+"abc"+
	"abc"+"def"+"abc"+"def"+"abc"+"def"+"abc"+"def"+"abc"+
	"abc"+"def"+"abc"+"def"+"abc"+"def"+"abc"+"def"+"abc"+
	"abc"+"def"+"abc"+"def"+"abc"+"def"+"abc"+"def"+"abc"
	fmt.Println(s6)
}

在这里插入图片描述

基本数据类型的默认值

【1】在Golang中数据类型都有一个默认值,当程序员没有赋值时,就会保留默认值(默认值又叫零值)。

在这里插入图片描述
【2】代码验证:在这里插入图片描述

基本数据类型之间的转换

【1】Go在不同类型的变量之间赋值时需要显式转换,并且只有显式转换(强制转换)。
【2】语法:
表达式T(v)将值v转换为类型T
T:就是数据类型
V:就是需要转换的变量

【3】案例展示:

package main
import "fmt".

func main(){
	//进行类型转换:
	var n1 int=100
	//var n2 float32 =n1在这里自动转换不好使,比如显式转换
	fmt.Println(n1)
	//fmt.Println(n2)
	var n2 float32=float32(n1)
	fmt.Println(n2)
	//注意:n1的类型其实还是int类型,只是将n1的值100转为了float32而已,n1还是int的类型
	fmt.Printf("%T",n1)//int
	fmt.Println()

	//将int64转为int8的时候,编译不会出错的,但是会数据的溢出
	var n3 int64=888888
	var n4 int8 =int8(n3)
	fmt.Println(n4)//56
	
	var n5 int32 = 12
	var n6 int64 = int64(n5)+30//一定要匹配=左右的数据类型
	fnt.Println(n5)
	fmt.Println(n6)

	var n7 int64 = 12
	var n8 int8 = int8(n7)+127//编译通过,但是结果可能会溢出
	//var n9 int8=int8(n7)+128//编译不会通过
	fmt.Println(n8)
	//fmt.Println(n9)

}

在这里插入图片描述

基本数据类型转为string

【1】基本数据类型和string的转换介绍
在程序开发中,我们经常需要将基本数据类型转成string类型。或者将string类型转成基本数据类型。

【2】基本类型转string类型
方式1:fmt.Sprintf(“%参数”,表达式)
方式2:使用strconv包的函数

【3】代码测试:

方式1:
在这里插入图片描述

package main
import "fmt"

func main(){
	var n1 int=19
	var n2 float32=4.78
	var n3 bool=false
	var n4 byte='a'

	var s1 string= fmt.Sprintf("%d",n1)
	fmt.Printf("s1对应的类型是:%T,s1=%q\n",s1,s1)

	var s2 string = fmt.Sprintf("%f",n2)
	fmt.Printf("s2对应的类型是:%T,s2=%q\n",s2,s2)

	var s3 string = fmt.Sprintf("%t",n3)
	fmt.Printf("s3对应的类型是:%T,s3=%q\n",s3,s3)

	var s4 string =fmt.Sprintf("%c",n4)
	fmt.Printf("s4对应的类型是:%T,s4=%q\n",s4,s4)
}

在这里插入图片描述

方式2:
在这里插入图片描述

package main
import (
	"fmt"
	"strconv"
)

func main(){
	var n1 int=18
	var s1 string=strconv.FormatInt(int64(n1),10)
	//参数:第一个参数必须转为int64类型,第二个参数指定字面值的进制形式为十进制
	fmt.Printf("s1对应的类型是:%T,s1=%q\n",s1,s1)

	var n2 float64 =4.29
	var s2 string = strconv.FormatFloat(n2,'f',9,64)
	//第二个参数:‘f(-ddd.dddd)第三个参数:9保留小数点后面9位第四个参数:表示这个小数是float64类型
	fmt.Printf("s2对应的类型是:%T,s2=%q\n",s2,s2)

	var n3 bool=true
	var s3 string = strconv.FormatBool(n3)
	fmt.Printf("s3对应的类型是:%T,s3=%q\n",s3,s3)
}

在这里插入图片描述

string类型转为基本数据类型

【1】string类型转基本类型
方式:使用strconv包的函数

在这里插入图片描述

【2】测试:
在这里插入图片描述

在这里插入图片描述

package main
import (
	"fmt"
	"strconv"
)

func main(){
	//string-->bool
	var s1 string ="true"
	var b bool
	//parseBool这个函数的返回值有两个:(valuebool,err error)
	//value就是我们得到的布尔类型的数据,err出现的错误
	//我们只关注得到的布尔类型的数据,err可以用_直接忽略
	b,_= strconv.ParseBool(s1)
	fmt.Printf("b的类型是:%T,b=%v\n",b,b)
	
	//string---》int64
	var s2 string="19"
	var num1 int64
	num1,_=strconv.ParseInt(s2,10,64)
	fmt.Printf("num1的类型是:%T,num1=%v\n",num1,num1)

	//string-->float32/float64
	var s3 string ="3.14"
	var f1 float64
	f1,_=strconv.ParseFloat(s3,64)
	fmt.Printf("f1的类型是:%T,f1=%v\n",f1,f1)

    //注意:string向基本数据类型转换的时候,一定要确保string类型能够转成有效的数据类型,否则最后得到的结果就是按照对应类型的默认值输出
	var s4 string = "golang"
	var b1 bool
	b1,_=strconv.ParseBool(s4)
	fmt.Printf("b1的类型是:%T,b1=%v\n",b1,b1)

	var s5 string ="golang"
	var num2 int64
	num2,_= strconv.ParseInt(s5,10,64)
	fmt.Printf("num2的类型是:%T,num2=%v\n",num2,num2)
}

在这里插入图片描述

  • 29
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值