首页 > 其他分享 >go 新建一个自定义包

go 新建一个自定义包

时间:2024-01-10 09:46:16浏览次数:28  
标签:body http err 自定义 新建 fmt go dbutil

一、概述

  在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!")
}

 

标签:body,http,err,自定义,新建,fmt,go,dbutil
From: https://www.cnblogs.com/tony-yang-flutter/p/17955850

相关文章

  • 【Django开发】美多商城项目第2篇:Django用户注册和登录开发(附代码,已分享)
    本系列文章md笔记(已分享)主要讨论django商城项目相关知识。项目利用Django框架开发一套前后端不分离的商城项目(4.0版本)含代码和文档。功能包括前后端不分离,方便SEO。采用Django+Jinja2模板引擎+Vue.js实现前后端逻辑,Nginx服务器(反向代理)Nginx服务器(静态首页、商品详情页、uwsgi......
  • Go语言接口防并发常用方案
    Go语言接口防并发常用方案原创 枫潇潇兮 程序员技术成长之路 2024-01-0908:30 发表于福建 听全文Go语言中处理并发的常见策略涉及了并发原语,如互斥锁(sync.Mutex)、读写锁(sync.RWMutex)、通道(channel)以及原子操作(sync/atomic)。接口(Interface)本身并不直接参与并发控制,但......
  • 阿里云“云创月汇,数智营销Go!”开启,带你玩转数字化营销
    阿里云一直致力于为中小企业提供更加普惠的算力、先进的技术以及优质的服务。基于此,在“云+AI”的时代背景下,阿里云在中小企业平台推出“云创月汇”系列活动,聚焦中小企业经营场景,助力中小企业全栈上云,用好新一代AI技术,提高企业经营效率。2024年1月份,“云创月汇”首期——数字化营销......
  • 在Django中,`python manage.py makemigrations`和`python manage.py migrate`是两个用
    在Django中,`pythonmanage.pymakemigrations`和`pythonmanage.pymigrate`是两个用于数据库迁移的命令,它们的主要区别在于:-`pythonmanage.pymakemigrations`:这个命令主要是记录我们对`models.py`的所有改动,并且将这个改动迁移到`migrations`这个文件下生成一个文件,例如:`0001`......
  • 优化内容传递,借助 Goooood®狗帝 融合CDN:一种综合解决方案 
    在当今数字时代,企业不断寻求方法来优化在线内容传递,以增强用户体验并在竞争激烈的环境中保持领先地位。Goooood®狗帝融合CDN是一个强大的内容传递优化解决方案,为企业提供了增强性能、可靠性和安全性的手段,同时触达全球受众。通过利用多个内容传递网络(CDN)的网络,Goooood®狗帝融......
  • springboot通过自定义注解@Log实现日志打印
    springboot通过自定义注解@Log实现日志打印效果图实操步骤注意,本代码在springboot环境下运行,jdk1.81.引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><dependency>......
  • Go语言常见错误| 不必要的代码嵌套
    Go语言因其简洁性和性能而受到开发者的青睐。但即便在Go这样的现代编程语言中,也常会出现一些编码上的常见错误,尤其是与不必要的代码嵌套有关的问题。在本文中,我们将探讨一些常见的错误,并提出解决方法以简化代码结构,避免不必要的嵌套。1.错误处理引起的嵌套在Go中,错误处理是......
  • 自定义ADFS登录页
    修改adfs登录页公司名称:Set-AdfsGlobalWebContent-CompanyName"ExchangeOWA" 参考:ADFS自定义:https://learn.microsoft.com/zh-cn/windows-server/identity/ad-fs/operations/ad-fs-customization-in-windows-server#custom-themes-and-advanced-custom-themes 修改ADFS登录页......
  • Qt读取文件对比:每次获取自定义的长度和使用系统的API,耗时对比
    0.前言在编程过程中,经常遇到文件读写操作,太频繁了。每次也都写的不一样。突发奇想,想测试下几种不同的读取文件的效率。测试以下三种方式读取文件效率:自定义读取文件耗时使用QFile类API读取文件耗时使用QTextStream类API读取文件耗时在测试前,说一下使用到的知识点。1.Qt......
  • UI自动化神器:RunnerGo
    UI自动化测试已经成为现代软件开发过程中不可或缺的一部分。它能够提供诸多优势,包括提高测试效率、减少人力成本、提升软件质量等。同时,可视化工具为UI自动化测试带来了更多便利和灵活性。然而,可视化工具也存在一些潜在的劣势。本文将探讨UI自动化测试的必要性以及可视化工具的优势......