zoukankan      html  css  js  c++  java
  • 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函数。

  • 相关阅读:
    车辆调度管理系统开发(八)
    车辆调度管理系统开发(七)
    车辆调度管理系统开发(六)
    车辆调度管理系统开发(五)
    车辆调度管理系统开发(四)
    设计模式
    webpack配置
    ECharts 配置语法
    react性能
    web安全
  • 原文地址:https://www.cnblogs.com/dcz2015/p/10103220.html
Copyright © 2011-2022 走看看