Go语言之init函数

 更新时间:2022年07月12日 16:01:07   作者:奋斗的大橙子  
Go语言有一个特殊的函数init,先于main函数执行,实现包级别的一些初始化操作。这篇文章介绍了Go中的Init函数,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

init函数会在main函数执行之前进行执行、init用在设置包、初始化变量或者其他要在程序运行前优先完成的引导工作。

举例:在进行数据库注册驱动的时候。

这里有init函数

package postgres

package postgres
import (
    "database/sql"
    "database/sql/driver"
    "errors"
)
// PostgresDriver provides our implementation for the
// sql package.
type PostgresDriver struct{}
// Open provides a connection to the database.
func (dr PostgresDriver) Open(string) (driver.Conn, error) {
    return nil, errors.New("Unimplemented")
}
var d *PostgresDriver
// init is called prior to main.
func init() {
    d = new(PostgresDriver)
    sql.Register("postgres", d)
}

这里是main函数

// Sample program to show how to show you how to briefly work
// with the sql package.
package main

import (
    "database/sql"

    _ "github.com/goinaction/code/chapter3/dbdriver/postgres"
)

// main is the entry point for the application.
func main() {
    sql.Open("postgres", "mydb")
}

可以看到这里main函数中使用看sql.Open 就是得益于上面的init函数

_ "github.com/goinaction/code/chapter3/dbdriver/postgres"

下划线加上包名的作用就是,执行这个包的init函数。

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • grpool goroutine池协程管理

    grpool goroutine池协程管理

    这篇文章主要介绍了grpool goroutine池协程管理,goroutine协程非常轻量级,这也是为什么go支持高并发,但是goroutine频繁创建销毁对GC的压力比较大,文章围绕主题展开详细的内容介绍,需要的小伙伴可以参考一下
    2022-06-06
  • Go语言报错:'godoc' 不是内部或外部命令,也不是可运行的程序(godoc无法使用处理)解决方法

    Go语言报错:'godoc' 不是内部或外部命令,也不是可运行的程序(godoc无法使用处理)解决

    这篇文章主要介绍了Go语言报错:'godoc' 不是内部或外部命令,也不是可运行的程序(godoc无法使用处理)解决方法,详细描述了Go语言godoc命令无法使用的原因、解决方法与相关注意事项,需要的朋友可以参考下
    2024-01-01
  • golang实现微信支付v3版本的方法

    golang实现微信支付v3版本的方法

    这篇文章主要介绍了golang实现微信支付v3版本的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • 详解golang 定时任务time.Sleep和time.Tick实现结果比较

    详解golang 定时任务time.Sleep和time.Tick实现结果比较

    本文主要介绍了golang 定时任务time.Sleep和time.Tick实现结果比较,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Go语言常见错误接口污染解决分析

    Go语言常见错误接口污染解决分析

    这篇文章主要为大家介绍了Go语言常见错误接口污染解决分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • golang中判断请求是http还是https获取当前访问地址

    golang中判断请求是http还是https获取当前访问地址

    这篇文章主要为大家介绍了golang中判断请求是http还是https获取当前访问地址示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • Go中如何使用set的方法示例

    Go中如何使用set的方法示例

    这篇文章主要介绍了Go中如何使用set的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Go语言实现MapReduce的示例代码

    Go语言实现MapReduce的示例代码

    MapReduce是一种备受欢迎的编程模型,它最初由Google开发,用于并行处理大规模数据以提取有价值的信息,本文将使用GO语言实现一个简单的MapReduce,需要的可以参考下
    2023-10-10
  • Golang strings包常用字符串操作函数

    Golang strings包常用字符串操作函数

    Golang 中的字符串统一使用 UTF-8 (属于Unicode编码的一种实现方式)进行编码,本篇文章将结合具体实例对常用的字符串操作函数进行介绍,感兴趣的可以了解一下
    2021-12-12
  • goLang引入自定义包的方法

    goLang引入自定义包的方法

    今天小编就为大家分享一篇goLang引入自定义包的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06

最新评论