Go语言入门笔记(一)
基础语法
- import 原理
- main 包中导入的包会被顺序导入
- 导入的包中依赖其他包,会首先导入依赖包,并初始化依赖包中的常量与变量,如果依赖包中有
init()
,会自动执行init()
- 所有包导入完成后会对 main 包中的变量与常量进行初始化,然后执行
init()
,最后执行main()
- 一个包被导入多次则该包只会被导入一次
- import 别名用法
别名 "package"
. "package"
调用该包中函数时可以省略前缀_ "package"
只执行包中init()
函数,无法调用包中其他函数
数据类型
- 整型
- 浮点型
- 字符串型:
string
统一编码为UTF-8
- 布尔型:
true
或false
- 派生类型
值类型默认为0,布尔类型默认为 false ,字符串类型默认为空字符串
整型:
序号 | 类型 |
---|---|
1 | uint8 无符号 8 位整型 (0 到 255) |
2 | uint16 无符号 16 位整型 (0 到 65535) |
3 | uint32 无符号 32 位整型 (0 到 4294967295) |
4 | uint64 无符号 64 位整型 (0 到 18446744073709551615) |
5 | int8 有符号 8 位整型 (-128 到 127) |
6 | int16 有符号 16 位整型 (-32768 到 32767) |
7 | int32 有符号 32 位整型 (-2147483648 到 2147483647) |
8 | int64 有符号 64 位整型 (-9223372036854775808 到 9223372036854775807) |
浮点型:
序号 | 类型 |
---|---|
1 | float32 IEEE-754 32 位浮点型数 |
2 | float64 IEEE-754 64 位浮点型数 |
3 | complex64 32 位实数和虚数 |
4 | complex128 64 位实数和虚数 |
其他数字类型:
序号 | 类型 |
---|---|
1 | byte 类似 uint8 |
2 | rune 类似 int32 |
3 | uint 32 或 64 位 |
4 | int 与 uint 一样大小 |
派生类型:
序号 | 类型 |
---|---|
1 | 指针类型(Pointer) |
2 | 数组类型 |
3 | 结构化类型(struct) |
4 | Channel 类型(chan) |
5 | 函数类型(func) |
6 | 切片类型(slice) |
7 | 接口类型(interface) |
8 | Map 类型(map) |
变量与常量
变量
- 单个变量的声明和赋值
- 声明:
var i int
「var 变量名称 变量类型」 - 赋值:
i = 1
「变量名称 : 值、表达式、函数等」 - 声明和赋值同时进行:
var i int = 1
「var 变量名称 变量类型 = 值、表达式、函数等」 - 分组声明格式:
1
2
3
4
5var (
i int
j float32
k string
)
- 声明:
- 同时声明多个变量和赋值:
var a,b,c int = 1,2,3
或a,b,c := 1,2,3
- 全局变量的声明必须使用
var
关键词,局部变量可省略 - 变量的类型转换只能发生在兼容类型之间、必须是显式的
- 变量的可见性规则
- 大写字母开头的变量可以再其他包中读取,是公用变量
- 小写字母开头的变量其他包中不可读取,是私有变量
常量
常量定义形式,常量类型范围
- 显式:
const identifier [type] = value
- 隐式:
const identifier = value
(通常叫无类型常量)
可使用分组声明、单行声明格式
- 显式:
常量可以使用内置表达式定义,例如
len()
unsafe.Sizeof()
等常量范围目前只支持布尔型、数字型(整数型、浮点型和复数)和字符串型
特殊常量 iota 的使用
iota
只能在常量定义中使用iota
在const
关键字出现的时候会被重置为 0const
中每新增一行常量声明将使iota
计数一次iota
常见使用法- 跳值使用法 使用 _ 声明常量来达到跳值的目的
1
2
3
4
5
6
7const (
a = iota
b = iota
_
_
c = iota // c = 4
) - 插队使用法
1
2
3
4
5const (
a = iota
b = 3.14
c = iota // c = 2
) - 表达式隐式使用法
1
2
3
4
5
6const (
a = iota * 2 // a = 0
b = iota * 3 // b = 3
c // c = 6
d // d = 9
) - 单行使用法
1
2
3
4
5
6const (
a, b = iota + 1, iota + 3
c, d
e = iota
)
// a = 1, b = 3, c = 2, d = 4, e = 2
- 跳值使用法 使用 _ 声明常量来达到跳值的目的
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Mr.Wantの博客!