最近几年,Go的热度持续飙升,国内外很多大公司都在大规模的使用Go。Google是Go语言诞生的地方,其他公司如Facebook、腾讯、阿里、字节跳动、百度、京东、小米等都在拥抱和转向Go。Go语言的开源项目也非常多,如kubernetes、docker、etcd。
随着市场对Go语言人才需求的增长,很多开发者都投入了Go语言的怀抱。本系列文章将以第一视角与大家一同开始Golang的面试之路,希望大家能够有所收获,拿下心仪的offer。
Go语言基本数据类型数值型-整数类型
Golang各整数类型分有符号和无符号,int uint的大小和系统有关
Golang的整形默认声明为int型
Golang程序中整型变量在使用时,遵守保小不保大的原则,即:在保证程序正确运行的前提下,尽量使用占用空间小的数据类型
| 类型 | 占用储存空间 | 范围 | 
|---|---|---|
| int8 | 1字节 | -2^7~2^7-1 | 
| int16 | 2字节 | -2^15~2^15-1 | 
| int32 | 4字节 | -2^31~2^31-1 | 
| int64 | 8字节 | -2^63~2^63-1 | 
| uint8 | 1字节 | 0~2^8-1 | 
| uint16 | 2字节 | 0~2^16-1 | 
| uint32 | 4字节 | 0~2^32-1 | 
| uint64 | 8字节 | 0~2^64-1 | 
| int | 32位系统4字节,64位系统8字节 | -2^31~2^31-1(32位系统)或-2^63~2^63-1(64位系统) | 
| uint | 32位系统4字节,64位系统8字节 | 0~2^32-1(32位系统)或0~2^64-1(64位系统) | 
数值型-浮点类型
浮点数在机器中存放形式:浮点数=符号位+指数位+尾数位,尾数部分可能丢失,造成精度损失
Golang浮点类型有固定的范围和字段长度,不受具体OS的影响
Golang的浮点类型默认声明为float64
通常情况下,应使用float64,因为它精度更高
| 类型 | 占用储存空间 | 范围 | 
|---|---|---|
| float32 | 4字节 | -3.403E38~3.403E38 | 
| float64 | 8字节 | -1.798E308~1.798E308 | 
字符型
Golang没有专门的字符类型,如果要存储单个字符,一般使用byte或者rune来保存
字符常量是用单引号括起来的单个字符
Golang中允许使用转义字符''来将其后的字符转变为特殊字符型常量
Golang语言的字符使用UTF-8编码
Golang中字符的本质是一个整数,直接输出时,是该字符对应的UTF-8编码的码值
? byte
与uint8等价,范围为0-255,当要储存字符时,选用byte,如:
var a byte = 'a'
? rune
与int32等价,范围为-2^31~2^31-1,表示一个Unicode码,如:
var a rune = '中'
布尔型
? bool
bool类型数据只允许取值true和false,不可以0或者其他值来替代true和false
bool类型占1个字节空间大小
bool类型适用于逻辑运算,一般用于程序流程控制
字符串
? string
字符串是一串固定长度的字符连接起来的字符序列,Golang中的字符串的字节使用UTF-8编码标识Unicode文本,不会出现中文乱码等问题
字符串一旦赋值了,字符串就不能修改了,在Go中字符串是不可变的
字符串的两种表示形式:
- 双引号:识别转义字符 
- 反引号:以字符串的原生形式输出,包括换行和特殊字符 
| 数据类型 | 默认值 | 
|---|---|
| 整型 | 0 | 
| 浮点型 | 0 | 
| 字符串 | "" | 
| 布尔类型 | false | 
