Go程序执行顺序
按顺序导入所有被main包引用的包,并为每个包执行init函数。导入包完成后,为main执行init函数,并开始启动main。
init函数
init函数无参数,无返回值,优先于main函数执行。初始化时总是单线程执行,并且严格按照包的依赖关系进行。每个源文件只能有一个init函数。
const类型
没有定义类型的const对象,可以在第一次被使用时确定类型。确定后该常量将无法再隐式转为其他类型。
1 | const aa, bb, cc = "eat", 2, "ok" |
默认值
golang中所有的变量都是初始化过的。
| 类型 | 初始值 |
|---|---|
| int | 0 |
| float | 0.0 |
| bool | false |
| string | "" |
| pointer | nil |
变量赋值
1 | var a, b, c int |
Variables can be redeclared in short multi-variable declarations where at least one new variable is introduced.
Redeclaration does not introduce a new variable; it just assigns a new value to the original.
1 | func main() { |
fmt
| fmt | 意义 | 例子 | 输出 |
|---|---|---|---|
| %d | 整数 | fmt.Printf("%d", 3) |
3 |
| %x | 16进制 | fmt.Printf("%x", 11) |
b |
| %X | 16进制 | fmt.Printf("%X",11) |
B |
| %.mg | 保留几位有效数字 | fmt.Printf("%.5g", 1234.5678) |
1234.6 |
| %f | 浮点数 | fmt.Printf("%f", 1234.5678) |
1234.567800 |
| %e | 科学计数 | fmt.Printf("%e", 1234.5678) |
1.234568e+03 |
数字强转
浮点类型强转int时采用截断的方式:
1 | var := 3.9 |