golang基础知识
init函数是什么时候执行的
init函数的作用是
- 程序执行前包的初始化
init函数执行顺序
- 同一go文件中可以写多个init函数,按照代码顺序依次执行
- 同一个package中,按照文件名(ASCII码顺序)顺序执行
- 不同包且不互相依赖,按照import的顺序执行
- 不同package中且互相依赖的,最后被依赖的最先被执行
go文件初始化顺序
- 引入的包
- 当前包中的常量和变量
- 当前包的init
- main函数
tips
- 一个包被引用多次,这个包的init函数只会被执行一次
- 所有的init函数都会在同一个goroutine内执行
如何获取项目的根目录
相对路径=执行命令时所在的路径
path,err := filepath.Abs("./")os.Getwdos.Args[0]打包后os.Executable()runtime.Caller(0)- 环境变量
格式化输出
https://www.cnblogs.com/HachikoT/p/16974769.html
new和make的区别
- make不仅会分配内存,还会初始化。new只会分配零值填充
make([]int,0) != nil
- make只适用于
slice map channel的数据,new没有限制 - make 返回原始类型(T),new返回类型的指针(*T)
- new申请的值都是零值,对创建映射和切片没有意义
- 创建数组使用字面量比较多
arr := [10]int{} (len = 10)
切片和数组
切片和数组的相同点
- 数组和切片要求全部数据类型都要相同
- 数组和切片的所有元素都是连续存放在内存中的
数组和切片的零值不同
- 数组的零值是每个元素类型的零值
- 切片的零值为
nil - 指针类型的数组和切片直接使用类型声明之后是
nil,不能直接使用
本文来自博客园,作者:肆月初陸丶,转载请注明原文链接:https://www.cnblogs.com/zarttic/p/18013507

浙公网安备 33010602011771号