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

  • 相关阅读:
    湖湘杯2020misc
    BUUOJ(Misc)
    BUUOJ(Web)
    网络信息安全攻防学习平台
    CTFHub web部分题解
    BugkuCTF 部分WP(搬运了很多WP)
    Web安全之机器学习入门 第2章-第5章学习笔记
    结构体
    排序的使用
    字符串和日期
  • 原文地址:https://www.cnblogs.com/dcz2015/p/10103220.html
Copyright © 2011-2022 走看看