一、Golang数据类型
1、基本数据类型
- 布尔型
true 或 false
- 数值型
整型、浮点型、复数
- 字符串
字符串是由单个字节连接起来的字符序列
- 派生类型
指针(pinter)
数组(array)
结构体(struct)
通道(channel)
函数(function)
切片(slice)
接口(interface)
Map
2、数字类型
- 整形
有符号(uint)
uint8 无符号 8 位整型 (0 到 255)
uint16 无符号 16 位整型 (0 到 65535)
uint32 无符号 32 位整型 (0 到 4294967295)
uint64 无符号 64 位整型 (0 到 18446744073709551615)
无符号(int)
int8 有符号 8 位整型 (-128 到 127)
int16 有符号 16 位整型 (-32768 到 32767)
int32 有符号 32 位整型 (-2147483648 到 2147483647)
int64 有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)
- 浮点型
float32 32位浮点型数
float64 64位浮点型数
complex64 32 位实数和虚数
complex128 64位实数和虚数
3、字符类型
使用单引号定义字符型数据,字符指的是单个字符。
有两种byte和rune:
byte:单字节字符,是uint8的别名。用于存储ASCII字符集字符
rune:多字节字符,是int32的别名。用于存储unicode字符集字符。
在类型推导时,推导的字符型为rune。
byte需要在定义变量时强制声明。
4、字符串类型
字符串就是一串固定长度的字符连接起来的字符序列。
Go的字符串是由单个字节连接起来的,Go语言的字符串的字节使用UTF-8编码标识Unicode文本。
字符串有两种表示形式:
双引号,会识别转义字符
反引号,以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果。
5、数据类型转换
Go语言中类型转换的语法:
**类型转换只能由当前类型转向更精确表示数值的类型,而不能反过来,这样避免了精度损失。比如由整型转向浮点型,表示更精确了,但由浮点型转换整型小数部分会被抹去。
二、常量与变量
1、标识符
标识符是函数、变量、常量、自定义类型以及包的名称的总称。
在Go语言中,标识符的命名遵循以下的规则:标识符任意字母或者下划线开始,后面可以跟任意的字符,数字或者下划线,并区分大小写
如:
a_1 // 合法标识符
_a1 // 合法标识符
1_a // 非合法标识符
在Go语言中,标识符分为预定义标识符和可自定义标识符。预定义标识符是指Go语言中预先定义好的标识符,包括关键字,内置数据类型标识符,常量值标识符,内置函数和空白标识符。以关键字为例,Golang中预定义了25个关键字:
2、常量
-
常量是一个简单值的标识符,在程序运行时,不会被修改的量。
-
常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。
常量值必须是编译期可确定的数字、字符串、布尔值,通过***const***关键字可以定义常量:
const s string = “hello world”
const a int = 6 // 在编译期运行的常量表达式
3、变量
- 变量需要先声明,再使用。
变量是通过 var 关键字声明的,声明格式为:var identifier type
如:
var a int //定义了一个整形变量a,在没有初始化的情况下,整形变量默认为0
变量初始化
在定义了变量后需要对变量初始化,完整的初始化方式
如:
a = 1
对于新定义的变量,通常在声明变量的同时对变量初始化,初始化的方式为:
var a int = 1 // 完整声明+初始化
var b = 2 // 提供初始化值,可省略变量类型,由编译器⾃自动推断
注意:
- 函数外的每个语句都必须以关键字开头,例如 var func 等;
- _ 多用于占位符,表示忽略值;
- 同一个作用域中不能重复声明同名的变量;