随笔 - 632  文章 - 17  评论 - 54  阅读 - 93万

go 新建一个自定义包

一、概述

  在go中新建一个自定义包供其他包使用。

  步骤:

    1.新建一个目录

    2.目录下新建一个xxx.go文件

    3.在xxx.go文件中使用package xxx(包名)

    4.此时你的包已经新建好了

    5.在需要使用上面包的地方导入即可,如:import "xxxx"

    ps:如果包中的内容需要对外开放则,方法名、结构体、interface的名称首字母必须要大写,否则只能在本包中使用。

二、代码示例(举一个例子)

  1.新建一个db包,在db目录中新建一个dbutil.go文件,包名是dbutil。结构如下:

  2.dbutil.go中的内容

复制代码
package dbutil

import (
    "database/sql"
    "fmt"
    "net/http"

    // "strconv"

    "github.com/gin-gonic/gin"
    _ "github.com/go-sql-driver/mysql"
)

var tabName = "user"
var body ResponseBody

// 统一返回数据的结构体
type ResponseBody struct {
    Code    int         `json:"code"`
    Message string      `json:"message"`
    Data    interface{} `json:"data"`
}

// 获取响应结果
func getResultSuccess(context *gin.Context, data interface{}) {
    body.Code = http.StatusOK
    body.Message = "操作成功"
    body.Data = data
    context.JSON(http.StatusOK, body)
    return
}

// 错误代码
func getResultError(context *gin.Context, message string) {
    body.Code = http.StatusBadRequest
    body.Message = message
    body.Data = nil
    context.JSON(http.StatusOK, body)
    return
}

var sqlDb *sql.DB

// 初始化
func Init() {
    //打开数据库
    sqlConnectStr := "root:123456@tcp(localhost:3306)/tony_cursor?charset=utf8&parseTime=true&loc=Local"
    sqlDb, err := sql.Open("mysql", sqlConnectStr)
    if err != nil {
        fmt.Println("数据库打开失败", err)
        return
    }
    //测试与数据库建立的连接
    err = sqlDb.Ping()
    if err != nil {
        fmt.Println("数据库连接失败", err)
        return
    } else {
        fmt.Println("数据库连接成功")
    }
}
复制代码

  3.在外部使用dbutil包中dbutil.go文件中的内容

    步骤:

      a.导入包(import "go_workspace/db")

      2.使用包(dbutil.Init()),此处的Init要对外使用,所以首字母要大写

复制代码
// GinTest.go
package main

import (
    "fmt"
    "go_workspace/db"
)

func main() {
    dbutil.Init()
    fmt.Println("Hello World!")
}
复制代码

 

posted on   飘杨......  阅读(99)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
历史上的今天:
2014-01-10 OpenCV开发环境搭建-并测试一个图像灰度处理程序
2014-01-10 Android GridView使用View.GONE只隐藏内容而不隐藏空间的解决方案
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示