美文网首页
Go语言之包初始化

Go语言之包初始化

作者: 有财君 | 来源:发表于2019-05-19 21:56 被阅读0次

在之前的例子中提到过初始化的顺序问题和init函数:

学习RadonDB源码(一)

观察一下下面的两段代码:

a.go:

package main

import "fmt"

var _ = a()

func a() int {
    fmt.Println("this is a file!")
    return 1
}

func init() {
    fmt.Println("init a file!")
}

runner.go:

package main

import "fmt"

var _ = r()

func r() int {
    fmt.Println("this is main!")
    return 1
}

func init() {
    fmt.Println("init main file")
}

func main() {
    fmt.Println("this is main function!")
}

这两个文件在同一个包下面,根据之前说的原则,首先应该初始化的是包级别的变量,也就是说,执行后会首先打印:

//这里顺序是以我的输入顺序为准的
this is a file!
this is main!

然后就会进入init函数,因此之后的打印应该是:

//打印顺序同上
init a file!
init main file

最后才会进入main函数,打印this is main function!

我的命令一定是这样的

go run a.go runner.go

如果我调换两个go文件的顺序,那么打印的顺序也就会发生相应的变化了。

相关文章

  • Go语言之包初始化

    在之前的例子中提到过初始化的顺序问题和init函数: 学习RadonDB源码(一) 观察一下下面的两段代码: a....

  • go init 函数

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

  • Golang io reader writer

    推荐阅读Go语言小贴士1 - io包Go语言小贴士2 - 协议解析Go语言小贴士3 - bufio包 一、《GO语...

  • Go mongo driver使用

    通过go mod下载官方driver包go.mongodb.org/mongo-driver 一、初始化设置 创建...

  • Go语言之旅:包

    每个 Go 程序都是由一些包组成的。 原文地址:https://golang-book.readthedocs.i...

  • Go 项目运行记录

    (仅供自己记录学习) 1. 项目结构 2. 根据项目包名初始化 【初始化】1. go mod init 【初始化】...

  • 理解go中的init函数

    本文主要介绍go中init函数的使用及意义。 I、init的几个特征 1、init函数用于包的初始化,如初始化包中...

  • Go 学习笔记 10 | go mod 以及自定义包

    一、go mod 以及 Golang 自定义包 go mod init 初始化项目 新建一个 demo 文件夹,在...

  • go语言之导包(import)

    点操作 别名操作 _操作 _操作其实是引入该包,而不直接使用包里面的函数,而是调用了该包里面的init函数,要理解...

  • Go语言之包和文件

    在Go语言中,包的作用和其他语言的库或者模块类似,Go语言的包我感觉类似于IDEA里面的module,就是可以互相...

网友评论

      本文标题:Go语言之包初始化

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