首页 > 其他分享 >go 笔记 init函数

go 笔记 init函数

时间:2023-03-24 22:22:29浏览次数:47  
标签:初始化 函数 笔记 golang init go main 变量

来自:go init函数
1、golang里的main函数是程序的入口函数,olang还有另外一个特殊的函数init函数,先于main函数执行

init函数的主要作用:
初始化不能采用初始化表达式初始化的变量。
程序运行前的注册。
实现sync.Once功能。
其他

init函数的主要特点:
init函数先于main函数自动执行,不能被其他函数调用;
init函数没有输入参数、返回值;
每个包可以有多个init函数;
包的每个源文件也可以有多个init函数,这点比较特殊;
同一个包的init执行顺序,golang没有明确定义,编程时要注意程序不要依赖这个执行顺序。
不同包的init函数按照包导入的依赖关系决定执行顺

golang程序初始化

golang程序初始化先于main函数执行,由runtime进行初始化,初始化顺序如下:

  • 初始化导入的包(包的初始化顺序并不是按导入顺序(“从上到下”)执行的,runtime需要解析包依赖关系,没有依赖的包最先初始化,与变量初始化依赖关系类似,参见golang变量的初始化);
  • 初始化包作用域的变量(该作用域的变量的初始化也并非按照“从上到下、从左到右”的顺序,runtime解析变量依赖关系,没有依赖的变量最先初始化,参见golang变量的初始化);
  • 执行包的init函数;

变量初始化->init()->main()

标签:初始化,函数,笔记,golang,init,go,main,变量
From: https://www.cnblogs.com/codestack/p/17253515.html

相关文章

  • Django笔记七之ManyToMany和OneToOne介绍
    ManyToMany是一种多对多的关系,在用途和使用方法上和外键ForeignKey类似。以下是本篇笔记的目录:ManyToMany的介绍through参数through_fields参数ManyToMany关系......
  • MongoDB官方性能测试报告:YCSB测试下的并发量提升
    1.前言MongoDB3.0的主要侧重点是提高性能,尤其是写性能和对硬件资源的利用率。为了展示我们在3.0中取得的成果和如何来应用这些新的改善,我们接下来将发布一系列博客来比较......
  • stream流笔记
    stream流笔记map转换元素List<Long>ids=list.stream().map(DictionaryMetaPO::getId).collect(Collectors.toList());Collectors.joining拼接字符串Strings=l......
  • [学习笔记] 树链剖分
    树链剖分的用处使用树剖将整棵树剖分为若干条链,组成线性结构,可以方便用其他的数据结构维护信息。一些定义重儿子:该节点的所有子节点中子树大小最大的点。轻儿子:该节点......
  • 组合数学课程笔记(四):容斥原理
    \[一切繁复都洗涤,却染上重叠的星\]容斥原理是容斥原理的基本公式。但是我们并不经常的使用这个公式本身,我们一般使用这个公式的推论:具体的理解这个式子,就是在全集\(......
  • PaddleOCR之高性能Go语言实现OCR识别
    最近为了让python语言能够直接调用PaddleOCR的C++的动态链接库,针对本人已经开源的PaddleOCR项目https://gitee.com/raoyutian/paddle-ocrsharp使用的PaddleOCR的C++动态库,......
  • Deep Transfer Learning综述阅读笔记
    这是一篇linkedin发表的深度迁移学习综述,里面讲了一些对于search/recommendsystem中的迁移学习应用.有不少指导性的方法,看完后摘录出来对于ranking方向的TL,主要有......
  • Go Xorm简单使用
    官网相关文档https://xorm.io/zh/docs/chapter-01/1.engine/https://gitea.com/xorm/xorm/src/branch/master/README_CN.mdxorm是一个简单而强大的Go语言ORM库.通过......
  • GitOps 实操手册 5:构建 ArgoCD GitOps 工作流
    内容简介本实验手册系列包含七个主题,涵盖了从应用容器化到GitOps工作流的实现与高级特性。通过这些实验手册,您将学习到如何构建、部署和管理应用,以及如何在Kubernetes集......
  • 华为擎云L420笔记本统信UOS配置
    启动到UOS安装程序安装包可以直接从UOS的cdimage镜像下载,注意找名字有HISILICON、arm64字眼的ISO,不清楚是KLV还是KLU之类的话可以看固件设置里面怎么说。按F2进入固件设......