Go项目的初始化

因为做完了DRF+VUE的一些项目,然后Django的后台并发速度肯定是没有golang快,然后用了一天时间看完了整个的golang的基础语法。现在准备开始项目搭建的第一步。因为项目搭建好了就可以很快的上手写接口~

go开发也是restful模型,所以后期写接口开发起来会很快。

这次主要是记录自己搭建初始化项目时候的一些小技巧。

首先go项目大家都会创建,直接new新的project

 指向的位置分别是你安装项目的目录和你是用的go的版本

项目创建好之后呢我们依次在我们的项目目录下创建一些常用的文件夹,方便写后期的项目接口。

api文件夹主要用来写后期的接口因为是restful开发

config文件夹里面包含ini文件 初始化我们的server和数据库的配置

middleware 中间件 后期需要

model 模型文件夹 

routers 我们的配置路由

utils 一些配置项工具文件都放在这里

go.mod就是我们go项目下所有的引入的包

main.go 是我们的主函数文件

首先我们要安装一个 ini的包 这个包可以帮助我们快速的进行项目的初始化配置 

go get gopkg.in/ini.v1

 然后创建ini为后缀的文件未见内写入

[server]
 
AppMode = debug #调试模式 release生产模式
HttpPort = :3000 #开3000端口,你想要开服务的端口可以自己修改

[datavase]
Db = mysql #你所用的数据库 
DbHost =   #数据库的主机
DbPort = 3306 #端口 
DbUser = 
DbPassWord = 
DbName =  #数据库名称

配置好ini文件后我们在我们utils文件夹下创建我们的setting配置文件

配置文件内写入,每一个MustString的后面的数据是当我们无法拿到ini里面的数据的时候我们设置的默认值

var (
	AppMode  string
	HttpPort string

	Db         string
	DbHost     string
	DbPort     string
	DbUser     string
	DbPassWord string
	DbName     string
)

// 初始化setting文件
func init() {
	file, err := ini.Load("config/config.ini") #你的ini文件所在的位置
	if err != nil {
		fmt.Println("配置文件错误无法读取", err)
	}
	LoadServer(file)
	LoadData(file)
}

// 默认配置server服务 must是默认值
func LoadServer(file *ini.File) {
	AppMode = file.Section("server").Key("AppMode").MustString("debug")
	HttpPort = file.Section("server").Key("HttpPort").MustString(":3000")
}

// 默认配置数据库
func LoadData(file *ini.File) {
	Db = file.Section("database").Key("Db").MustString("mysql")
	DbHost = file.Section("database").Key("DbHost").MustString("默认数据")
	DbPort = file.Section("database").Key("DbPort").MustString("3306")
	DbUser = file.Section("database").Key("DbUser").MustString("默认数据")
	DbPassWord = file.Section("database").Key("DbPassWord").MustString("默认数据")
	DbName = file.Section("database").Key("DbName").MustString("默认数据")
}

我们写模型之前需要在我们的model文件夹下面做数据库的初始化,因为我们使用数据库要先打开数据库然后关闭数据库 否则会浪费资源。所以我们新建一个db.go的文件里面写入

var db *gorm.DB
var err error

// 初始化数据库
func InitDb() {
	db, err = gorm.Open(utils.Db, fmt.Sprintf("%s:%s@(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local", utils.DbUser, utils.DbPassWord, utils.DbHost, utils.DbPort, utils.DbName))
	if err != nil {
		fmt.Printf("连接数据库失败,检查参数", err)
	}

	db.SingularTable(true)               //默认表名为单数 为FALSE是负数
	db.AutoMigrate(&User{}, &Activity{}) //自动迁移数据库文件
	// SetMaxIdleConns 用于设置连接池中空闲连接的最大数量。
	db.DB().SetMaxIdleConns(10)
	// SetMaxOpenConns 设置打开数据库连接的最大数量。
	db.DB().SetMaxOpenConns(100)
	// SetConnMaxLifetime 设置了连接可复用的最大时间。
	db.DB().SetConnMaxLifetime(10 * time.Second)

}

这里我是用的gorm,gorm现在分v1和v2版本,我现在使用的是v1版本,如果你是v2版本可以到中文文档看一下open的配置有点不太一样。go内置的gorm是很方便的,因为我是django过来的所以用orm可能会很顺手(狗头~)

这样我们数据库配置完后开始我们的路由配置!

router创建路由文件写入

import (
	"awesomeProject/utils"
	"github.com/gin-gonic/gin"
	"net/http"
)

func InitRouter() {
	gin.SetMode(utils.AppMode) //设置调解模式
	r := gin.Default()         //设置默认路由

	router := r.Group("api/version1") //设置路由组
	{
		router.GET("hello", func(c *gin.Context) {
			c.JSON(http.StatusOK, gin.H{
				"msg": "GETok",
			})
		})
        #正常以后开发后面就是跟我们文件里面的函数了 我这样是为了测试
	}

	r.Run(utils.HttpPort) // 开放setting设置的端口 3000
}

最后的最后就是我们主函数文件main了

import (
	"awesomeProject/model"
	"awesomeProject/routes"
)

func main() {
	//引用数据库
	model.InitDb()
	//引用路由
	routes.InitRouter()
}

这样我们的go项目的基础配置就基本上搭建完了~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值