Go语言-基本数据类型
第 5 章 基础数据类型
在静态类型语言(C++/Java/Golang 等)中规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存。
5.1 整形
整型分两大类
- 有符号整型:int8、int16、int32、int64、int。
- 无符号整型:uint8、uint16、uint32、uint64、uint。
类型 | 取值范围 |
---|---|
int8 | [-128 , 127] |
int16 | [-32768 , 32767] |
int32 | [-2147483648 , 2147483647] Go语言中没有字符类型,所有字符都使用int32存储 |
int64 | [-9223372036854775808 , 9223372036854775807] |
int | 受限于计算机系统,系统是多少位,int为多少位 |
uint8 | [0 , 255] |
uint16 | [0 , 65535] |
uint32 | [0 , 4294967295] |
uint64 | [0 , 18446744073709551615] |
uint | 受限于计算机系统,系统是多少位,uint为多少位 |
rune | 与int32类似,常用在获取值的Unicode码 |
byte | 与uint8类似.强调值为原始数据.一个字节占用8个二进制 |
uintptr | 大小不确定,类型取决于底层编程 |
示例程序:
1 | package main |
Tips:
- 除非对整型的大小有特定的需求,否则你通常应该使用
int
表示整型宽度,在32
位系统下是32
位,而在64
位系统下是64
位。表示范围:在32
位系统下是-2147483648
~2147483647
,而在64
位系统是-9223372036854775808
~9223372036854775807
。 - 对于
int8
,int16
等这些类型后面有跟一个数值的类型来说,它们能表示的数值个数是固定的。所以,在有的时候:例如在二进制传输、读写文件的结构描述(为了保持文件的结构不会受到不同编译目标平台字节长度的影响)等情况下,使用更加精确的int32
和int64
是更好的。
5.2 浮点型
浮点型表示存储的数据是实数,如 3.145。关于浮点型的说明,如表所示。
类型 | 字节数 | 说明 |
---|---|---|
float32 | 4 | 32 位的浮点型 |
float64 | 8 | 64 位的浮点型 |
示例程序:
1 | func showFloat() { |
Tips:
- 通过上面的程序,我们知道浮点数能表示的数值很大,但是浮点数的精度却没有那么大:
float32
的精度只能提供大约6
个十进制数(表示小数点后6
位)的精度。float64
的精度能提供大约15
个十进制数(表示小数点后15
位)的精度。
5.3 字符
字符串中的每一个元素叫作“字符”,定义字符时使用单引号。Go 语言的字符有两种,如表所示。
类 型 | 字 节 数 | 说 明 |
---|---|---|
byte | 1 | 表示 UTF-8 字符串的单个字节的值,表示的是 ASCII 码表中的一个字符,uint8 的别名类型 |
rune | 4 | 表示单个 unicode 字符,int32 的别名类型 |
声明示例如下:
1 | package main |
Tips:
由此可见, byte 类型只能表示 28个值,所以你想表示其他一些值,例如中文的话,就得使用 rune 类型
1
var y rune = '牛'
5.4 字符串
字符串在 Go 语言中是以基本数据类型出现的,使用字符串就像使用其他原生基本数据类型 int、float32、float64、bool 一样。
示例程序:
1 | var study string // 定义名为str的字符串类型变量 |
有些字符串没有现成的文字代号,所以只能用转义字符来表示。常用的转义字符如表所示。
转 义 字 符 | 含 义 |
---|---|
\r |
回车符 return,返回行首 |
\n |
换行符 new line, 直接跳到下一行的同列位置 |
\t |
制表符 TAB |
\' |
单引号 |
\" |
双引号 |
\\ |
反斜杠 |
定义多行字符串的方法如下。
- 双引号书写字符串被称为字符串字面量(string literal),这种字面量不能跨行。
- 多行字符串需要使用反引号“`”,多用于内嵌源码和内嵌数据。
- 在反引号中的所有代码不会被编译器识别,而只是作为字符串的一部分。
多行字符串定义方式如例所示:
1 | package main |
5.3 布尔类型
关于 布尔(bool) 类型,无非就是两个值:true 或者 false 。
示例程序:
1 | func showBool(){ |
Tip:
- 如果你学过其他编程语言或许会发现,布尔型可以参与数值运算,也可以与其他类型进行转换。但是在 Go 中,真值是用
true
表示,并且 不与1
相等;同样的,假值是用false
表示,并且 不与0
相等。
5.4 复数型
复数型用于表示数学中的复数,如 1+2j、1-2j、-1-2j 等。在 Go 语言中提供了两种精度的复数类型:complex64 和 complex128 ,分别对应 float32 和 float64 两种浮点数精度,如表所示。
类 型 | 字 节 数 | 说 明 |
---|---|---|
complex64 | 8 | 64 位的复数型,由 float32 类型的实部和虚部联合表示 |
complex128 | 16 | 128 位的复数型,由 float64 类型的实部和虚部联合表示 |
示例程序:
1 | func showComplex() { |
Tip:
当然,我们可以对声明进行简化,使用自然的方式书写复数:
1
2
3x := 1 + 2i
y := 3 + 4i
z := 5 + 6i
5.5 fmt 格式输出
格式 | 含义 |
---|---|
%% | 一个%字面量 |
%b | 一个二进制整数值(基数为 2),或者是一个(高级的)用科学计数法表示的指数为 2 的浮点数 |
%c | 字符型。可以把输入的数字按照 ASCII 码相应转换为对应的字符 |
%d | 一个十进制数值(基数为 10) |
%f | 以标准记数法表示的浮点数或者复数值 |
%o | 一个以八进制表示的数字(基数为 8) |
%p | 以十六进制(基数为 16)表示的一个值的地址,前缀为 0x,字母使用小写的 a-f 表示 |
%q | 使用 Go 语法以及必须时使用转义,以双引号括起来的字符串或者字节切片[]byte,或者是以单引号括起来的数字 |
%s | 字符串。输出字符串中的字符直至字符串中的空字符(字符串以’\0‘结尾,这个’\0’即空字符) |
%t | 以 true 或者 false 输出的布尔值 |
%T | 使用 Go 语法输出的值的类型 |
%x | 以十六进制表示的整型值(基数为十六),数字 a-f 使用小写表示 |
%X | 以十六进制表示的整型值(基数为十六),数字 A-F 使用小写表示 |
如何学习Go语言微服务,快速步入架构师
添加微信 | 公众号更多内容 |
---|---|
本博客所发布的内容,部分内容来源于网络,版权归原作者所有,如有侵权,请联系删除。转载请注明来自 面向加薪学习!