golang func


func 的基本構成元素

func  (p myType )  funcName ( a, b int , c string ) ( r , s int ) {
    return
}

 

其中:
關鍵字———func // 這個是定義函數的關鍵字
函數擁有者—(p myType) // 這個是此函數的擁有者,下面解釋(此項可省略)
方法名———funcName // 這個是定義函數的名字
入參———— a,b int,b string // 這個是定義函數的入參
返回值——— r,s int // 這個是定義函數的返回值,golang可以返回多個值
函數體——— { }

重點說說這個函數擁有者(p myType),這個是相較於C/C++比較特殊的地方。
特定類型定義函數,即為類型對象定義方法
在Go中通過給函數標明所屬類型,來給該類型定義方法,上面的 (p myType) 即表示給myType聲明了一個方法, p myType 不是必須的。如果沒有,則純粹是一個函數。

下面就是為Mssql類型定義了一個Open函數。

func (m *Mssql) Open() (err error) {
    var conf []string
    conf = append(conf, "Provider=SQLOLEDB")
    conf = append(conf, "Data Source="+m.dataSource)
    if m.windows {
        // Integrated Security=SSPI 這個表示以當前WINDOWS系統用戶身去登錄SQL SERVER服務器(需要在安裝sqlserver時候設置),
        // 如果SQL SERVER服務器不支持這種方式登錄時,就會出錯。
        conf = append(conf, "integrated security=SSPI")
    }
    conf = append(conf, "Initial Catalog="+m.database)
    conf = append(conf, "user id="+m.sa.user)
    conf = append(conf, "password="+m.sa.passwd)

    m.DB, err = sql.Open("adodb", strings.Join(conf, ";"))
    if err != nil {
        return err
    }
    return nil
}

用屬下方式來調用,先實例化一個Mssql類型,再調用Open

    db := Mssql{
        dataSource: "hddf021.my3w.com",
        database:   "hds1sf21_db",
        // windwos: true 為windows身份驗證,false 必須設置sa賬號和密碼
        windows: false,
        sa: SA{
            user:   "hdssdf021",
            passwd: "",
        },
    }
    // 連接數據庫
    err := db.Open()
    if err != nil {
        fmt.Println("sql open:", err)
        return 0
    }
    defer db.Close()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM