这是我参与「第五届青训营」伴学笔记创作活动的第11天
常用函数
main 函数与 init 函数
main 函数
在上面的代码中,所有的代码都是写在使用 func 关键字定义的 main 函数中,在 Go 中 main 函数是入口函数,类似 Java 中的 main 函数。
init 函数
Go 中 init 函数负责 package 的初始化,init 函数:
- 在 main 函数前执行,自动被调用,初始化 package 中的变量等
- init 函数不能被其他函数调用
- 每个包可以有多个 init 函数,同一个包的 init 函数执行顺序与 init 函数定义的位置有关
- 包中每个源文件也可以又有多个init 函数
- 不同包中的 init 函数按照导入的依赖关系决定 init 函数的执行顺序
- init 函数没有返回值
package main
import "fmt"
func init() {
fmt.Println("这是第一个 init 函数")
}
func init() {
fmt.Println("这是第二个 init 函数")
}
func init() {
fmt.Println("这是第三个 init 函数")
}
func main() {
// 常用函数
fmt.Println("这是 main 函数")
}
执行上述代码,输出记过如下:
这是第一个 init 函数
这是第二个 init 函数
这是第三个 init 函数
这是 main 函数
调用第一个和第三个 init 函数的位置,再次执行改代码
这是第三个 init 函数
这是第一个 init 函数
这是第二个 init 函数
这是 main 函数
同一个文件中 init 函数执行的顺序与位置有关,但是都会先于 main 函数执行。
init 函数 VS main 函数
main 函数和 init 函数定义时都不能有任何返回值,且都是有 Go 自动调用的。
main 函数只能定义一个,init 函数可以定义多个。
这两个函数官方只能定义在测试环境中使用,生产环境不推荐使用。
fmt 包及其函数
上述代码中除了 main 函数还涉及到了打印相关的函数,这些函数都在 fmt 包下,共有三个输出函数
- Println:自动换行,且一次输出多个值时,多个值中间会带有空格
- Print:不自动换行,多个值连续输出,没有空格
- Printf:格式化输出
package main
import "fmt"
func main() {
// 常用函数
name_01 := "tony1"
name_02 := "tony2"
name_03 := "tony3"
fmt.Println("自动换行,多个值之间会有空格", name_01, name_02, name_03)
fmt.Print("不自动换行,多个值之间没有空格", name_01, name_02, name_03)
fmt.Print("\n")
fmt.Printf("%v, %v, %v 格式化输出", name_01, name_02, name_03)
}
执行上述代码,输出结果如下:
自动换行,多个值之间会有空格 tony1 tony2 tony3
不自动换行,多个值之间会有空格tony1tony2tony3
tony1, tony2, tony3 格式化输出
格式化输出时 %v 表示获取变量的值。
待整理后持续更新
参考
- 字节课程-Go语言原理与实践
- 菜鸟教程-Go语言
- Wiki-Go社区