首页 > 其他分享 >Go语言中init函数执行的顺序

Go语言中init函数执行的顺序

时间:2023-07-29 21:55:53浏览次数:65  
标签:初始化 顺序 函数 package init Go 执行

init 函数的执行规则:

  1. 对于同一个 go 文件,init 函数的执行顺序从上到下,即在代码中先出现的 init 函数会先执行。

  2. 对于同一个 package,不同文件是按照文件名字符串比较的结果决定执行顺序的,字符串越小的文件越早被初始化。

  3. 对于不同的 package,如果不相互依赖,则按照 import 的顺序决定初始化顺序。

  4. 如果 package 存在依赖,则先初始化被依赖的 package。

  5. 每个 package 只会被初始化一次。

  6. main 函数总在所有 init 函数执行完后,才会执行。

这些规则确保了在 Go 程序开始执行 main 函数之前,所有的变量初始化和 init 函数都已经完成。这样可以保证在 main 函数运行时,所有的其他包都已经准备就绪。

标签:初始化,顺序,函数,package,init,Go,执行
From: https://www.cnblogs.com/tangjicheng/p/17590617.html

相关文章

  • django(路由层)
    一、简介#路由匹配url(r'test',views.test),url(r'test_add',views.test_add)#r'test'与请求头的数据进行正则匹配'''url方法第一个参数是正则表达式只要第一个参数正则表达式能够匹配到内容,那么就会立刻停止往下匹配直接执行对应的视图函数在输入url的......
  • 【Go blog】Govulncheck v1.0.0 发布了!
    我们很高兴地宣布,govulncheckv1.0.0已经发布,同时也发布了用于集成扫描到其他工具的API的v1.0.0版本!Go对漏洞管理的支持首次在去年九月宣布。从那时起,我们做了一些改变,最终在今天发布。这篇文章描述了Go的更新漏洞工具,以及如何开始使用它。我们最近还发布了一个安全最佳实......
  • 如何在 Django 中使用 MVT 创建一个基本项目?
    Django是一种用Python编写的流行Web框架,遵循Model-View-Template(MVT)架构模式。MVT是众所周知的Model-View-Controller(MVC)模式的变体,它提供了一种构建Web应用程序的结构化方法。了解如何在Django中使用MVT创建基本项目是开发健壮且可扩展的Web应用程序的基本步骤。在本......
  • Django web框架实现nacos【多配置】修改
    Djangoweb框架实现nacos【多配置】修改基于上面一个博客进行功能升级优化,在实际场景中一般会有多个配置需要同时进行修改,上章节功能就不足满足使用了,在此基础上进行功能优化同时修改多个配置进行提交表单。1.安装依赖pipinstallnacos-sdk-pythonPyYAML 2.创建类修......
  • Python-Django-环境搭建和基础知识
    Python-Django学习目录:环境搭建和基础知识:包括安装Python和Django、了解Python基础语法、掌握Django框架的基本概念和工作原理等。模型和数据库:包括创建模型、定义字段、使用DjangoORM进行数据库操作等。视图和URL:包括定义视图函数、URL路由配置、模板渲染等。表单和验证:包括表单......
  • Gopan-基于go-zero实现慕课网实战仿百度网盘项目
    Gopan-基于go-zero实现慕课网实战仿百度网盘项目项目地址:https://github.com/liuxianloveqiqi/Gopan......
  • Django web框架实现修改【单个】nacos配置
    Djangoweb框架实现修改【单个】nacos配置基于上一个博客的Django的项目环境继续添加一些高级的功能——修改nacos配置。简单回顾一下,上面添加的功能:博客网站文章上传、发布,rediskey删除接口。1.首先安装PythonNacos客户端库pipinstallnacos-sdk-python 2.创建n......
  • MongoDB运行环境的十个建议
     1.生产环境始终开启身份验证这不是性能建议,而是安全建议。安装后建议创建admin用户,重启mongodb实例并开启身份验证:>useadminswitchedtodbadmin>db.createUser({...user:"abce",...pwd:"password",...roles:["root"]...})Successfullyaddeduse......
  • Django Form源码分析(2)
    1前置知识点1.1render函数 可以看到render函数先拿到模板,再进行模板渲染那么form函数是如何自动生成表单里的input标签呢,应该是在form里已经渲染好一遍生成了input标签放进了{"form":form}的集合render函数再进行渲染2Form函数2.1Form源码分析2.1.1Form初始化......
  • 图计算之 nebula-algorithm——todo,待实践,感觉有大坑
    写在前面:nebula-algorithm目前仅支持NebulaGraphv1.x,不支持NebulaGraphv2.x。 这玩意是不是有大坑啊!我看1.21以下都不支持了。。。  图计算之nebula-algorithm在开始nebula-algorithm介绍之前,先贴一个它的开源地址:https://github.com/vesoft-inc/nebula-algorithm。N......