Go 数据类型 、变量、 常量、 运算符
四、数据类型
1、布尔型
true 或者 false
例:var b bool = true
2、数字类型
整型 int、浮点型 float32、float64、复数、位的运算采用补码
2.1 整型
数据类型 | 说明 |
---|---|
uint8 | 无符号8位 |
uint16 | 无符号16位 |
uint32 | 无符号32位 |
uint64 | 无符号64位 |
int8 | 有符号8位 |
int16 | 有符号16位 |
int32 | 有符号32位 |
int64 | 有符号64位 |
2.2 浮点型
数据类型 | 说明 |
---|---|
float32 | IEEE-754 32位 |
float64 | IEEE-754 64位 |
complex64 | 32位实数和虚数 |
complex128 | 64位实数和虚数 |
2.3 其他数字类型
数据类型 | 说明 |
---|---|
byte | 类似uint8 |
rune | 类似int32 |
uint | 32或64位 |
int | 与uint一样大小 |
uintptr | 无符号整型,用于存放一个指针 |
3、字符串类型
字符串的字节使用 UTF-8 编码标识 Unicode文本
4、派生类型
(1)指针类型 (Pointer)
(2)数组类型
(3)结构化类型 (struct)
(4)Channel类型
(5)函数类型
(6)切片类型
(7)接口类型 (interface)
(8)Map类型
五、变量
1、声明变量
var 变量名 数据类型
例:
var a int
//赋初值
var a int = 1
var a,b int
//赋初值
var a,b int = 1, 2
var str string = "abc"
str := "abc" //声明变量str并赋初值
1.1、指定变量类型,如果没有初始化,则数值类型默认为零值,布尔值默认为false,字符串默认为""(空字符串);
1.2、根据值自行判定变量类型;
1.3、使用 := 声明变量,相当于
var a int
a = 1
1.4、这种因式分解关键字的写法一般用于声明全局变量
var(
vname1 type1
vname2 type2
)
注:a,b := 1, "abc" //这种不带声明格式的只能在函数体中出现,不能声明为全局变量
1.5、局部变量声明之后必须要使用,否则会报错;全局变量允许声明但不使用
1.6、空白标识符 _
空白标识符 _ 也被用于抛弃值,如值 5 在:_, b = 5, 7
中被抛弃。
_ 实际上是一个只写变量,你不能得到它的值。这样做是因为 Go 语言中你必须使用所有被声明的变量,但有时你并不需要使用从一个函数得到的所有返回值。
1.7、交换两个变量的值
a, b = b, a
六、常量
1、定义常量
const 变量名 数据类型 = 值
例:
const a string = "abc" //显式类型定义
const b = "abc" //隐式类型定义
2、在定义常量组时,如果不提供初始值,则表示将使用上行的表达式
3、iota
(1)特殊常量,可以认为是一个可以被编译器修改的常量
(2)iota 在 const 关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。
(3)iota 只是在同一个 const 常量组内递增,每当有新的 const 关键字时,iota 计数会重新开始。
例:第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;所以 a=0, b=1,
c=2
const (
a = iota
b
c
)
例:
func main() {
const (
a = iota //0
b //1
c //2
d = "ha" //独立值,iota += 1
e //"ha" iota += 1
f = 100 //iota +=1
g //100 iota +=1
h = iota //7,恢复计数
i //8
)
}
七、运算符
内置的运算符:算术/关系/逻辑/位/赋值/其他运算符