Go语言 init函数的具体使用
init函数
C语言没有init函数,C语言一般需要自己去写init,然后在构造函数中调用
Go语言自带init函数,每一个包都可以包含一个或多个init函数
这个init会在包被引用的时候(import)进行自动调用。
init函数演示
init函数没有参数,没有返回值,原型固定如下
一个包中包含多个init时,调用顺序是不确定的。
同一个包中多个文件都可以有init函数。
创建减法函数包
创建test文件夹。
创建减法文件
在test文件夹中创建sub文件夹,在其中创建sub.go。
示例如下:
package sub import "fmt" // init函数没有参数,没有返回值,原型固定如下 // 一个包中包含多个init时,调用顺序是不确定的 func init() { fmt.Println("这个是 package sub 中的第一个 init()") } func init() { fmt.Println("这个是 package sub 中的第二个 init()") } func Sub(a, b int) int { return a - b }
创建入口文件调用
在test文件夹中创建main.go引入并调用减法函数。
示例如下:
package main import ( "fmt" "test/sub" ) func main() { res2 := sub.Sub(10, 6) fmt.Println("10-6=", res2) }
运行结果:
这个是 package sub 中的第一个 init()
这个是 package sub 中的第二个 init()
10-6= 4
创建减法同级函数
在减法函数文件创建同命名空间函数文件sub2,并在减法函数中调用。
在go语言中,同一层级目录,不允许出现多个包名。
由于Sub2 test2与sub.go在同一个包下面,所以可以使用,并且不需要sub.形式。
示例如下:
package sub import "fmt" func Sub2() { fmt.Println("Sub2 func") } func test2() { fmt.Println("test func") }
运行结果:
这个是 package sub 中的第一个 init()
这个是 package sub 中的第二个 init()
Sub2 func
test func
10-6= 4
_形式
init函数时不允许用户显式调用的。
有的时候引用一个包,可能只想使用这个包里面的init函数(mysq1iinit对驱动进行初始化)
但是不想引用包中的其他函数,为了防止编译器出错,可以使用_形式来处理。
示例如下:
package main import ( //"fmt" _ "test/sub" // 此时只会调用sub里的init函数,编译还不会报错。 ) func main() { //res2 := sub.Sub(10, 6) //fmt.Println("10-6=", res2) }
运行结果:
这个是 package sub 中的第一个 init()
这个是 package sub 中的第二个 init()
总结
到此这篇关于Go语言 init函数的具体使用的文章就介绍到这了,更多相关Go语言 init函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
golang xorm 自定义日志记录器之使用zap实现日志输出、切割日志(最新)
这篇文章主要介绍了golang xorm 自定义日志记录器,使用zap实现日志输出、切割日志,包括连接postgresql数据库的操作方法及 zap日志工具 ,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-10-10sublime text3解决Gosublime无法自动补全代码的问题
本文主要介绍了sublime text3解决Gosublime无法自动补全代码的问题,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2022-01-01Go语言kube-scheduler深度剖析与开发之pod调度
这篇文章主要为大家介绍了Go语言kube-scheduler深度剖析与开发,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-04-04
最新评论