这是一个使用Golang开发的一个简易版的Blog,会用到MySql Gorm Gin等技术,这篇文章主要讲项目的初始化操作。
安装
点击安装 Golang最新版本
安装Mysql,推荐使用Docker安装。
项目初始化
创建一个项目目录,比如golang-blog,然后进入目录,执行以下命令
会生成一个go.mod文件,内容如下
1 2 3 4 5
| module golang-blog
go 1.22.4
|
创建main.go文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| package main
import "github.com/gin-gonic/gin"
func main() { r := gin.Default()
r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) r.Run(":8080") }
|
这段代码是一个简单的Gin框架的代码,启动后,访问http://localhost:8080/ping会返回{"message":"pong"}
Gin文档地址: https://gin-gonic.com/,可以查看更多的API
链接数据库
创建一个config目录,然后创建一个db.go文件,内容如下
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
| package config
import ( "fmt" "log" "os" "gorm.io/driver/mysql" "gorm.io/gorm" )
var DB *gorm.DB
func ConnectMysql() {
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", os.Getenv("DB_USER"), os.Getenv("DB_PASSWORD"), os.Getenv("DB_HOST"), os.Getenv("DB_PORT"), os.Getenv("DB_NAME"))
var errDb error DB, errDb = gorm.Open(mysql.Open(dsn), &gorm.Config{}) if errDb != nil { log.Fatalf("Error connecting to the database: %v", errDb) }
}
|
这段代码是连接Mysql的代码,使用了Gorm框架,Gorm文档地址: https://gorm.io/
还需要在项目根目录创建一个.env文件,内容如下
1 2 3 4 5
| DB_USER=root DB_PASSWORD=123456 DB_NAME=blog DB_HOST=localhost DB_PORT=3306
|
这个文件我们使用godotenv来读取,所以需要安装godotenv包
1 2 3
| go get github.com/joho/godotenv
|
godotenv文档地址: https://github.com/joho/godotenv
在main.go文件中引入godotenv包,并且连接数据库
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
| package main
import ( "golang-blog/config" "github.com/gin-gonic/gin" "github.com/joho/godotenv" ) func init() { err := godotenv.Load(".env") if err != nil { panic("Error loading .env file") } } func main() {
config.ConnectMysql() r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) r.Run(":8080") }
|
这样我们就连接了数据库, 项目初始化完成,下一篇文章我们会创建一个Model来操作数据库。
总结
我们用到的依赖有Golang Gin Gorm Mysql godotenv等,这篇文章主要讲项目的初始化操作,下一篇文章我们会创建一个Model来操作数据库。
当前的项目目录结构如下
1 2 3 4 5 6 7 8 9 10 11
| │ .env │ go.mod │ go.sum │ main.go │ ├─.vscode │ launch.json │ └─config db.go
|
Github地址