关于Golang面试宝典
最近几年,Go的热度持续飙升,国内外很多大公司都在大规模的使用Go。Google是Go语言诞生的地方,其他公司如Facebook、腾讯、阿里、字节跳动、百度、京东、小米等都在拥抱和转向Go。Go语言的开源项目也非常多,如kubernetes、docker、etcd。
随着市场对Go语言人才需求的增长,很多开发者都投入了Go语言的怀抱。本系列文章将以第一视角与大家一同开始Golang的面试之路,希望大家能够有所收获,拿下心仪的offer。
Go语言基本数据类型
数值型-整数类型
Golang各整数类型分有符号和无符号,int uint的大小和系统有关
Golang的整形默认声明为int型
Golang程序中整型变量在使用时,遵守保小不保大的原则,即:在保证程序正确运行的前提下,尽量使用占用空间小的数据类型
类型 | 占用储存空间 | 范围 |
---|---|---|
int8 | 1字节 | -27~27-1 |
int16 | 2字节 | -215~215-1 |
int32 | 4字节 | -231~231-1 |
int64 | 8字节 | -263~263-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字节 | -231~231-1(32位系统)或-263~263-1(64位系统) |
uint | 32位系统4字节,64位系统8字节 | 02^32-1(32位系统)或02^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等价,范围为-231~231-1,表示一个Unicode码,如:
var a rune = '中'
布尔型
bool
bool类型数据只允许取值true和false,不可以0或者其他值来替代true和false
bool类型占1个字节空间大小
bool类型适用于逻辑运算,一般用于程序流程控制
字符串
string
字符串是一串固定长度的字符连接起来的字符序列,Golang中的字符串的字节使用UTF-8编码标识Unicode文本,不会出现中文乱码等问题
字符串一旦赋值了,字符串就不能修改了,在Go中字符串是不可变的
字符串的两种表示形式:
- 双引号:识别转义字符
- 反引号:以字符串的原生形式输出,包括换行和特殊字符
基本数据类型默认值
数据类型 | 默认值 |
---|---|
整型 | 0 |
浮点型 | 0 |
字符串 | "" |
布尔类型 | false |