登录
首页 >  Golang >  Go问答

在Go语言中的`init()`函数用法

来源:stackoverflow

时间:2024-02-28 20:39:23 378浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《在Go语言中的`init()`函数用法》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

我在理解为什么 init() 在 go 中有用时遇到了一些困难。一般来说,您在 init() 中执行的任何操作都可以通过 go 文件中的声明来完成。

具体来说,这两个文件之间有什么实际区别?

// useinit.go

package main

var answer int

func init() {
    answer = 42
}
// useDeclaration.go

package main

var answer int = 42

正确答案


如果你制作了一个用于其他应用程序的包并且没有 main,但你必须在应用程序运行之前做一些事情(并且一定要完成),你可以在 init() 中完成。为了运行它,主机应用程序不需要执行任何操作,甚至不需要使用包中的任何函数。 mysql 驱动程序就是一个很好的例子 (github.com/go-sql-driver/mysql)。它的 init() 函数如下所示:

func init() {
    sql.register("mysql", &mysqldriver{})
}

当您使用导入它时

import _ "github.com/go-sql-driver/mysql"

mysql 驱动程序将被注册,因此 sql 包可以连接到 mysql 服务器,但是您没有执行任何操作,甚至不使用此包中的 func。

在这种情况下,导入名称应该是一个下划线,以告诉编译器不要删除该包,但看起来您没有将它用于任何用途。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《在Go语言中的`init()`函数用法》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>