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 ) |
评论