Golang 入门基础(二) - 变量与常量
定义
var 定义变量
1 | var a int // var 定义变量 |
1 | var ( |
const 定义常量
1 | const a int = 10 // 必须初始化 |
:= 自动变量
1 | a := 1 // var a int = 1 |
- 注意: 自动变量不可用于全局变量的定义。
匿名变量
- 匿名变量
_伪接受数值,数值将直接被丢弃,不可访问其数值。 - 匿名变量
_可以使用=与:=。(其他变量重定义将出错)
1 | func getData() (int, int) { |
作用域
- 局部变量:
- 每一个
{}可以被视为一个作用域,它包括函数、if语句、for语句等。 - 在局部作用域定义的变量将在所定义的作用域结束时消亡。
- 每一个
- 全局变量:
基本数据类型
概览
- 概览中的
complex/uintptr/byte/rune将作补充说明,其他不作介绍。
| 类型 | 默认值 | 描述 |
|---|---|---|
int / uint |
0 | 默认位数的整型和无符号整型,unsafe.Sizeof() 查看字节数 |
int8 / int16 / int32 / int64 |
0 | 8 / 16 / 32 / 64 位整型 |
uint8 / uint16 / uint32 / uint64 |
0 | 8 / 16 / 32 / 64 位无符号整型 |
float32 / float64 |
0.0 | 32 / 64 位浮点数(IEEE754) |
complex64 / complex128 |
(0.0+0.0i) | 32 / 64 位复数 |
uintptr |
nil | 无符号整型,指针类型 |
byte |
‘\000’ | 类似 uint8,表示 ASCII 编码 |
rune |
‘\000’ | 类似 int32,表示 UTF-8 编码 |
- 在
Golang中,int/uint不是int8/int16/int32/int64/uint8/uint16/uint32/uint64的别名。 - 后面还将介绍非基本数据类型,如
string、slice、channel。
复数类型 complex
-
可以使用
a+bi表示复数,如0.5+1.5i。 -
可以使用内置函数
func complex(r, i float64) complex128构造复数类型。
指针类型 uintptr / unsafe.Pointer
- 任何指针类型不可直接转换为
uintptr,uintptr可以与unsafe.Pointer相互转换,unsafe.Pointer可以实现对任意数据类型的强制转换,一般直接使用unsafe.Pointer即可。注意:这是危险的操作。
1 | a := "Hello World!" // string: "Hello World!" |
字符类型 byte / rune
- 字符类型使用单引号表示,默认为
rune类型,当为ASCII编码范围时,可以转换为byte类型。字符有多种表达方式,与Clang有所不同。
| 符号 | 描述 |
|---|---|
'A' |
字符表示 |
'\n' 等 |
转义字符,与 Clang 基本相同 |
'\101' |
八进制编码,'\000' ~ '\177'(0 ~ 127) |
'\x41' |
十六进制,'\x00' ~ '\xff'(0 ~ 255) |
'\u4f60' |
Unicode 编码,'\u0000' ~ '\uffff'(0 ~ 65535) |
评论
