Go语言学习(四)、基础知识梳理

今天我们继续来看看,go语言中的基础数据类型

废话不多说,整!

类型

名称

长度

零值

说明

bool

布尔类型

1

false

其值不为真即为假,不可以用数字代表true或false

byte

字节型

1

0

uint8别名

rune

字符类型

4

0

专用于存储unicode编码,等价于uint32

int, uint

整型

4或8

0

有符号32位或无符号64位 

int8

整型

1

0

-128 ~ 127,

uint8

整型

1

0

0 ~ 255

int16

整型

2

0

-32768 ~ 32767,

uint16

整型

2

0

0 ~ 65535

int32

整型

4

0

-2147483648 到 2147483647

uint32

整型

4

0

0  4294967295(42亿)

int64

整型

8

0

0 到 18446744073709551615(1844京)

uint64

整型

8

0

-9223372036854775808到 9223372036854775807

float32

浮点型

4

0.0

小数位精确到7

float64

浮点型

8

0.0

小数位精确到15位

complex64

复数类型

8

 

 

complex128

复数类型

16

 

64 位实数和虚数

uintptr

整型

4或8

 

以存储指针的uint32或uint64整数

string

字符串

 

""

utf-8字符串

一、布尔类型

计算机中,经常用布尔类型来判断对与错,布尔类型的变量取值,要么为真(True)要么为假(False)

用bool关键字来进行定义,看下面的代码

package main

import "fmt"

func main() {
	//bool 类型
	var a bool
	fmt.Println(a)
}

运行结果:

false

可以看到,我们在定义一个布尔类型以后,没有做任何赋值操作,直接打印结果,会发现,布尔类型的默认值为false

做赋值操作:

package main

import "fmt"

func main() {
	//bool 类型
	var a bool
	fmt.Println(a)
	a = true
	fmt.Println(a)
	b:= true
	fmt.Println(b)
}

运行结果:

false
true
true

定义布尔值类型a,不做赋值操作,打印默认值为false

将true赋值给a,打印a的值为true

定义默认推导类型true 值,给b

打印b的值,为true

 一般bool 字段常用于条件判断中

二、浮点型(小数类型)

Go语言中支持两种类型的小数:

float32和float64

  1. float32 的浮点数的最大范围约为 3.4e38,可以使用常量定义:math.MaxFloat32。小数位精确到7
  2. float64 的浮点数的最大范围约为 1.8e308,可以使用一个常量定义:math.MaxFloat64。小数位精确到15位

 我们看下面的代码:

package main

import "fmt"

func main() {
	//声明浮点型变量
	var a float32 //float32  7位小数
	a = 3.14
	fmt.Println("a=", a)
	var  b float64 //float63 15位小数
	b = 3.33333333333
	fmt.Println("b=", b)
}

输出结果

a= 3.14
b= 3.33333333333

使用自动推导类型定义浮点型变量,默认使用float64

//自动推导类型定义
	a1 := 3.14
	b1 := 3.333333333333
	fmt.Println("a1", a1)
	fmt.Println(reflect.TypeOf(a1))
	
	fmt.Println("b1", b1)
	fmt.Println(reflect.TypeOf(b1))

输出结果

a1 3.14
float64
b1 3.333333333333
float64

我们在给变量赋值的时候,必须要将类型转换一致,才可以进行赋值。float32 和float64虽然都是浮点类型,但是他们两者是不同数据类型。float64类型,给float32赋值的时候,一定要先将float64类型的数据,强制转换为float32类型。

三、字符类型

(1)字符基本输入与输出

go语言中没有专门的字符类型,存储字符直接使用byts来存储,所谓字符类型是用单引号括起来的单个字符,关于字符的定义使用如下:

package main

import "fmt"

func main() {
   //声明字符变量
   var a byte //声明一个字符类型
   a = 'a' //单引号,字符
   fmt.Printf("%c", a)
}

输出结果:

a

第二种:

package main

import "fmt"

func main() {
	var a byte //声明字符类型
	a = 97  //97赋值给a
	fmt.Printf("a=%c", a)
}

输出结果

a=a

这里我们可以看到,我们定义了字符型变量a,赋值给a的是整数97,打印的结果,却是小写字符‘a’

因为:计算机不能直接存储字符类型,只能转成数字存储,可以通过ASCII表,来查询,a对应的整数值,为97,计算机是根据‘ASCII’码来存储。

注意:

package main

import "fmt"

func main() {
	var a byte //声明字符类型
	a = 97  //97赋值给a
	fmt.Println("a=", a)
	fmt.Printf("a=%c", a) //这里需要注意,如果我们要输出字符a,那么必须制定%c,否则会输出整数
}

输出结果

a= 97
a=a

(2)转义字符:

字符除了我们常见的的字符,'a','b','c'等等以外,还有一些特殊的字符,比如'\n',它的作用是什么?换行,不在控制台输出具体的内容,这种字符我们通常称之为转移字符, 是具有特出含义的字符。

\"  :表示一个英文半角的双引号,如下代码:

package main

import "fmt"

func main() {
	fmt.Printf("go语言\"牛皮\",厉害")
}

输出结果:

go语言"牛皮",厉害

\t :表示一个tab键的空格(可以用来对输出的内容进行排版)

package main

import "fmt"

func main() {
	fmt.Println("1,\t2,\t3,\t4")
	fmt.Println("5,\t6,\t6,\t7")
}

输出结果:

1,	2,	3,	4
5,	6,	6,	7

\\  :表示一个\(主要用在表示磁盘目录上,后面我们讲解文件操作时,经验要根据磁盘目录获取文件然后进行读取,写入等操作)

package main

import "fmt"

func main() {
	fmt.Printf("E:\\D\\Go语言")
}

输出结果

E:\D\Go语言

以上转移字符只是以后开发过程中我们会经常用到的,还有一些,这里就不一一举例,有兴趣的朋友们,可以下去研究一下。

四、字符串类型

字符串就是一串固定长度的字符连接起来字符序列。

用单引号括起来的单个字符是字符类型,用双引号括起来的字符是字符串类型。“a”是字符还是字符串呢?

package main

import "fmt"

func main() {
	var str1 string //声明一个字符串类型变量
	str1 = "abc"
	fmt.Println("str1=",str1)
	fmt.Printf("str1=%s",str1) //%s, 指定输出字符串格式
}

输出结果

str1= abc
str1=abc

字符与字符串的区别:

package main

import "fmt"

func main() {
	var a byte
	var str string
	//字符
	//1、单引号
	//2、字符,一般字符类型,都只有一个字符,转义字符除外'\n'等
	a = 'a'
	fmt.Println("a = ",a)

	//字符串
	//1、双引号
	//2、字符串有1个或多个字符组成
	//3、字符串都是隐藏了一个结束符,'\0'
	str = "a" //是由'a'和'\0'组成了一个字符串
	fmt.Println("str = ", str)
}

输出结果:

a =  97
str =  a

五、fmt包的格式化输入输出

我们前面在输出与输入字符串类型,字符类型,整型等都指定了对应的格式化,那么go语言中还有哪些格式化呢?

看下面的表格:

格式

含义

%%

一个%字面量

%b

一个二进制整数值(基数为2),或者是一个(高级的)用科学计数法表示的指数为2的浮点数

%c

字符型。可以把输入的数字按照ASCII码相应转换为对应的字符

%d

一个十进制数值(基数为10)

%e

以科学记数法e表示的浮点数或者复数值

%E

以科学记数法E表示的浮点数或者复数值

%f

以标准记数法表示的浮点数或者复数值

%g

以%e或者%f表示的浮点数或者复数,任何一个都以最为紧凑的方式输出

%G

以%E或者%f表示的浮点数或者复数,任何一个都以最为紧凑的方式输出

%o

一个以八进制表示的数字(基数为8)

%p

以十六进制(基数为16)表示的一个值的地址,前缀为0x,字母使用小写的a-f表示

%q

使用Go语法以及必须时使用转义,以双引号括起来的字符串或者字节切片[]byte,或者是以单引号括起来的数字

%s

字符串。输出字符串中的字符直至字符串中的空字符(字符串以'\0‘结尾,这个'\0'即空字符)

%t

以true或者false输出的布尔值

%T

使用Go语法输出的值的类型

%U

一个用Unicode表示法表示的整型码点,默认值为4个数字字符

%v

使用默认格式输出的内置或者自定义类型的值,或者是使用其类型的String()方式输出的自定义值,如果该方法存在的话

%x

以十六进制表示的整型值(基数为十六),数字a-f使用小写表示

%X

以十六进制表示的整型值(基数为十六),数字A-F使用小写表示

红色标注,是经常用到的一些输出格式,需要掌握。

这次就先讲到这里,下次继续。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

成都-Python开发-王帅

你的鼓励是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值