首页 > 其他分享 >golang基础知识

golang基础知识

时间:2024-02-11 20:22:22浏览次数:28  
标签:顺序 函数 基础知识 golang init 执行 os

init函数是什么时候执行的

init函数的作用是

  • 程序执行前包的初始化

init函数执行顺序

  • 同一go文件中可以写多个init函数,按照代码顺序依次执行
  • 同一个package中,按照文件名(ASCII码顺序)顺序执行
  • 不同包且不互相依赖,按照import的顺序执行
  • 不同package中且互相依赖的,最后被依赖的最先被执行

go文件初始化顺序

  1. 引入的包
  2. 当前包中的常量和变量
  3. 当前包的init
  4. main函数

tips

  • 一个包被引用多次,这个包的init函数只会被执行一次
  • 所有的init函数都会在同一个goroutine内执行

如何获取项目的根目录

相对路径=执行命令时所在的路径

  • path,err := filepath.Abs("./")
  • os.Getwd
  • os.Args[0]打包后
  • os.Executable()
  • runtime.Caller(0)
  • 环境变量

格式化输出

https://www.cnblogs.com/HachikoT/p/16974769.html

标签:顺序,函数,基础知识,golang,init,执行,os
From: https://www.cnblogs.com/zarttic/p/18013507

相关文章

  • Golang包管理
    go包管理历史gopathgo1.5版本之前GOPATHsrc存放源代码pkg存放编译后的文件bin存放编译后的可执行文件通过统一包存放的路径来进行管理不支持依赖包的版本控制gopath模式下工程代码必须放在GOPATH/src下goget将远程代码克隆到GOPATH/src目录下goi......
  • Golang内部包的使用
    函数和变量的可见性小写字母开头只能在内部访问internal文件夹internal父级,同级目录下的包可以访问internal目录内部的包作用例子将管理后台的包和用户的包分开,将工程放在internal里面,公用包放在外面私有包的导入本地包导入使用replace进行替换原来包的地址=>替换后的......
  • 8小时速成golang--Golang环境安装
    安装Golang的步骤如下:下载Golang安装包。访问Golang官方网站[golang.org](https://golang.org/),根据您的操作系统类型和位数选择合适的安装包。Windows系统通常下载.msi格式的安装包,而Linux系统则下载.tar.gz或.zip格式的安装包。安装Golang。对于Windows系统,双击......
  • golang容器部署时区报错
    问题:consttimezone="Asia/Shanghai"funcTimeFormat(datetime.Time,patternstring)string{location,err:=time.LoadLocation(timezone)date.In(location)returndate.Format(pattern)} 1.在本地开发使用了时区是没有问题的,但是部署到服务器上面......
  • golang之枚举类型iota
    枚举类型是一种常用的数据类型,用于表示一组有限的、预定义的、具名的常量值。在枚举类型中,每个常量都是一个枚举值,它们之间的值相等且唯一。枚举类型通常用于表示一组相关的常量,比如星期、月份、性别等等。在其他语言里(比如Java和C),都内置了枚举类型,而在Go语言里是没有内置......
  • redis基础知识梳理
    性能测试工具redis-benchmark-hhost-pport-cconnections-nrequests-hhost:指定Redis服务器的主机名或IP地址。-pport:指定Redis服务器的端口号。-cconnections:指定并发连接数,即同时向服务器发起的连接数量。-nrequests:指定总的请求数量,即测试期间每个连接向服务......
  • golang类型转换模块之gconv
    gf框架提供了非常强大的类型转换包gconv,可以实现将任何数据类型转换为指定的数据类型,对常用基本数据类型之间的无缝转换,同时也支持任意类型到struct对象的属性赋值。由于gconv模块内部大量使用了断言而非反射(仅struct转换使用到了反射),因此执行的效率非常高。使用方式:import"g......
  • 详解golang实现一个带时效的环形队列
    1.需求mysql执行时间超过100ms以上打warn日志,但是一分钟以内这种warn日志超过10条就需要告警。所以需求就是获得一分钟以内mysql的warn的个数。2.分析为什么使用环形队列而不使用slice?因为队列长度固定,所以可以一开始就分配好空间,不用自动扩容,环形的目的就是不用改变数组的值,只用移......
  • golang定时器之timer+ticker
    转载: https://juejin.cn/post/7327157426298011663 Timer是一个一次性的定时器,用于在未来的某一时刻执行一次操作。基本使用创建Timer定时器的方式有两种:NewTimer(dDuration)*Timer:该函数接受一个time.Duration类型的参数d(时间间隔),表示定时器在过期之前等待的......
  • golang之常用标准库汇总
    1.import"runtime/debug"func StackfuncStack()[]byteStack 返回格式化的go程的调用栈踪迹。 对于每一个调用栈,它包括原文件的行信息和PC值;对go函数还会尝试获取调用该函数的函数或方法,及调用所在行的文本。 func PrintStackfuncPrintStack()PrintStack将Stack......