美文网首页
go语言init和main函数

go语言init和main函数

作者: atdoking | 来源:发表于2021-06-12 11:51 被阅读0次
import(
  _ "BeegoDemo/routers"
  "github.com/astaxie/beego"
)
func main(){
  beego.Run()
}

首先看到import导入了两个包,而有个包前面有一个"_",这表明是引入rounters包,并执行init()方法。这里设计一个知识点,就是Go语言的执行过程

Go里面有两个保留的函数:init函数和main函数。下边就来比较一下两个函数的异同。
相同点:两个函数在定义时不能有任何的参数和返回值,且Go程序自动调用。
不同点:init可以应用于任意包中,且可以重复定义多个。main函数只能用于main包中,且只能定义一个。

下边说一下两个函数的执行顺序:
对同一个go文件的init()调用顺序是从上到下的
对同一个package中不同文件是按文件名字符串比较“从小到大”顺序调用各文件中的init()函数,对于
对不同的package,如果不相互依赖的话,按照main包中"先import的后调用"的顺序调用其包中的init()
如果package存在依赖,则先调用最早被依赖的package中的init()
最后调用main函数

import 下划线(如:import _ hello/imp)的作用:当导入一个包时,该包下的文件里所有init()函数都会被执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()函数而已。这个时候就可以使用 import _ 引用该包。即使用【import _ 包路径】只是引用该包,仅仅是为了调用init()函数,所以无法通过包名来调用包中的其他函数。

go中import用于导入包。导入之后就可以使用包中的代码。
比如:

import(
    "fmt"
)

在代码中就可以使用fmt包中的方法,如:

fmt.Println("hello world")

1、使用点操作引入包时,可以省略包前缀:

import(
    . "fmt"
)

注意上面 fmt前多了 . 字符。代码中使用时:

Println("hello world")

前缀fmt就不需要了。

2、别名操作可以给包起个小名儿。如:

import(
f "fmt"
)
f.Println("hello world")

3、操作
由于go在引入包时调用包的init方法。所以使用
操作,主要是为了使用包的init函数,一般用在数据库方面的包中:

import (
    "database/sql"
    _ "github.com/ziutek/mymysql/godrv"
)

这个可以避免go编译时提示引入了包但未使用。

相关文章

  • Golang的Init函数和Main函数

    Init函数和main函数 go语言中的init函数用于包package初始化。该函数时go语言的一个重要特性in...

  • go语言init和main函数

    首先看到import导入了两个包,而有个包前面有一个"_",这表明是引入rounters包,并执行init()方法...

  • init()函数 先导入的包的init函数先执行 init()函数和main()函数 这两个函数都是go中的保留函...

  • Go语言 - Hello world

    与C语言类似,Go程序也是从main函数开始运行,但是这个main函数必须定义在main package中。(Go...

  • 002 以太坊源码解析 - 创世区块

    生成创世区块 geth main 函数在 /cmd/geth/main.go 。 init 调用的是 cmd/ge...

  • GO函数

    init 函数: 每一个源文件都可以有一个init函数,该函数会在main函数执行前,被go运行框架调用。 作用:...

  • main函数和init函数

    main函数 Go语言程序的默认入口函数(主函数):func main()函数体用{}一对括号包裹。只能应用于pa...

  • 三、Go的函数

    三、Go的函数 Go语言最少有一个main()函数。 1、Go的函数定义: 2、函数参数 函数如果使用参数,该变量...

  • Golang重要特征之init函数

    go语言中init函数用于包(package)的初始化,该函数是go语言的一个重要特性 inti函数主要特征: 1...

  • 01-Go语言与C语言的异同

    Go语言程序组成 和C语言一样,Goa语言也是由众多函数组成 和C语言一样,程序运行会自动调用叫做main的函数 ...

网友评论

      本文标题:go语言init和main函数

      本文链接:https://www.haomeiwen.com/subject/afzbeltx.html