美文网首页
Go语言中init 函数、变量、常量的执行顺序

Go语言中init 函数、变量、常量的执行顺序

作者: 左诗右码 | 来源:发表于2024-05-09 10:30 被阅读0次

init 函数、变量、常量的执行顺序

init函数
  • 假如 main 引入了 pkg1 最终依赖于 pkg3,pkg3 中的 init() 方法会优先被执行;
  • 同一个包里,单文件的情况,init() 优先于其他方法执行,包括 main();
  • 同一个包里的常量和变量声明会优先于 init() 方法执行;
  • 同一个文件里允许多个 init() 存在,会按照自上而下的顺序执行;
  • 同一个包,多个文件里存在 init() 的情况,执行顺序是按文件名的字母排序执行。

包导入路径优先级

如果使用 govendor

  1. 先从项目根目录的 vendor 目录下查找
  2. 然后从 $GOROOT/src 目录下查找
  3. 然后从 $GOPATH/src 目录下查找
  4. 都找不到时,报错

如果使用 go modules

  1. 如果导入的包有域名,则都会在 $GOPATH/pkg/mod 下查找,找不到就去域名对应的网站下寻找,找不到或者找到的不是一个包,则报错
  2. 如果导入的包没有域名,比如 fmt 包,则就去 $GOROOT 下找
  3. 如果项目根目录下存在 vendor 目录,则不管导入的包有没有域名,都只会在 vendor 目录中查找

通常 vendor 目录是通过执行 go mod vendor 命令生成的。

相关文章

  • 程序实体与代码块

    程序实体 Go语言中的程序实体包括变量、常量、函数、结构体和接口。 代码块 在Go语言中,代码块一般就是一个由花括...

  • 第二章:Go语言变量

    1. Go语言中的命名 1.1 命名规则 GO语言中的变量名、函数名、类型名、常量名、包名等等的命名都应该遵循一个...

  • 04. Go极简教程 初始化顺序\命名规范

    初始化顺序 先执行import包的每个文件的变量, 然后是init方法, 最后执行main函数, 当main函数执...

  • Golang的Init函数和Main函数

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

  • Go语言-程序实体与关键字

    任何Go语言源码文件都由若干个程序实体组成的。在Go语言中,变量、常量、函数、结构体和接口被统称为“程序实体”,...

  • Go语言-程序实体与关键字

    任何Go语言源码文件都由若干个程序实体组成的。在Go语言中,变量、常量、函数、结构体和接口被统称为“程序实体”,而...

  • Go常量变量_002

    Go 常量变量 变量 go语言中变量名由字母、数字、下划线组成,其中首个字符不能为数字。Go 语言中关键字和保留字...

  • go init()执行顺序

    go允许定义多个init(),多个init()会涉及到执行先后的问题,本文将详细讲解这个问题. 概述 init()...

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

  • Go 语言变量作用域

    作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。Go 语言中变量可以在三个地方声明: ...

网友评论

      本文标题:Go语言中init 函数、变量、常量的执行顺序

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