Go 语言基本概念-标识符-数据类型-变量-常量
- 关键字或保留字
1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|
break | default | func | interface | select |
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrough | if | range | type |
continue | for | import | return | var |
- 预定义标识符
1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|
append | copy | println | real | |
bool | byte | string | uintptr | new |
true | false | iota | nil | panic |
int | int8 | int16 | int32 | int64 |
uint | uint8 | uint16 | uint32 | uint64 |
complex | complex64 | complex128 | float32 | float64 |
cap | close | imag | make | len |
recover |
数据类型
- 布尔型
- 数值类型
- 字符串类型
派生类型(指针、数组、结构体、Channel、函数、切片、interface、Map 类型)
数值类型中 rune 类型,类似 int32;uintptr 无符号整形,用于存放一个指针。
派生类型中,channel、切片、interface、Map 类型比较陌生。
变量
var identifier type // 定义一个 identifier 变量,类型为 type,变量没有初始化,默认为 0。 var identifier1, identifier2 type // 定义多个类型为 type 的变量 var v_name = value // 带初始值的变量声明,省略了类型,编译器自动判断 v_name := value // 省略 var 的变量声明,左侧必须为未声明的变量,智能用于函数体中,不能用于声明全局变量。这种声明称为初始化声明。 // 这种因式分解关键字的写法一般用于声明全局变量 var ( vname1 v_type1 vname2 v_type2 )
注意区分值类型和引用类型。
空白标识符
_
,是只写的,常用于抛弃值。常量
常量在程序运行过程中不能被修改。
const identifier [type] = value const c_name1, c_name2 = value1, value2
常量还可以用作枚举:
const ( Unknown = 0 Female = 1 Male = 2 )
特殊常量 iota
iota,可以认为是一个可以被编译器修改的常量。参考菜鸟教程。
关于
unsage.Size(字符串)
表达式的返回值问题go 语言的 string 是一种数据类型,这个数据类型占用 16 字节空间,前 8 字节是一个指针,指向字符串值的地址,后八个字节是一个整数,标识字符串的长度;注意 go 语言的字符串内部并不以 '\0' 作为结尾,而是通过一个长度域来表示字符串的长度。
有疑问加站长微信联系(非本文作者)
