• 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函数。

  • 相关阅读:
    apache安装
    docker搭建redis主从
    docker安装
    sklearn工具-绪论
    数学基础-矩阵和线性代数
    数学基础-概率论与贝叶斯先验
    数学基础-数学分析
    数据科学包——Matplotlib
    数据科学包——pandas
    数据科学包——numpy
  • 原文地址:https://www.cnblogs.com/dcz2015/p/10103220.html
Copyright © 2020-2023  润新知