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

  • 相关阅读:
    Manager Test and DAO
    07-图
    06-排序
    05-查找
    第04次作业-树
    第03次作业-栈和队列
    week-02 线性表
    week01—绪论
    使用promise封装el-form多个表单校验
    $slot受slot-scope影响,导致$slot中的key消失
  • 原文地址:https://www.cnblogs.com/dcz2015/p/10103220.html
Copyright © 2011-2022 走看看