1.安装
- 新建一个目录GinTest
执行
- go env -w GO111MODULE=on
- go env -w GOPROXY=https://goproxy.cn,direct
- go mod init test
- go get -u github.com/gin-gonic/gin
新建main.go
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.String(http.StatusOK, "pong")
})
r.Run(":8080")
}
2.配置文件
app:
env: local
port: 8888
app_name: gin-app
app_url: http://localhost
type Configuration struct {
App App `mapstructure:"app" json:"app" yaml:"app"`
}
type App struct {
Env string `mapstructure:"env" json:"env" yaml:"env"`
Port string `mapstructure:"port" json:"port" yaml:"port"`
AppName string `mapstructure:"app_name" json:"app_name" yaml:"app_name"`
AppUrl string `mapstructure:"app_url" json:"app_url" yaml:"app_url"`
}
- global/app.go
go.mod的module名+包名
import (
"github.com/spf13/viper"
"lwx1/config"
)
type Application struct {
ConfigViper *viper.Viper
Config config.Configuration
}
var App = new(Application)
import (
"fmt"
"github.com/fsnotify/fsnotify"
"github.com/spf13/viper"
"lwx1/global"
"os"
)
func InitializeConfig() *viper.Viper {
config := "config.yaml"
if configEnv := os.Getenv("VIPER_CONFIG"); configEnv != "" {
config = configEnv
}
v := viper.New()
v.SetConfigFile(config)
v.SetConfigType("yaml")
if err := v.ReadInConfig(); err != nil {
panic(fmt.Errorf("read config failed: %s \n", err))
}
v.WatchConfig()
v.OnConfigChange(func(in fsnotify.Event) {
fmt.Println("config file changed:", in.Name)
if err := v.Unmarshal(&global.App.Config); err != nil {
fmt.Println(err)
}
})
if err := v.Unmarshal(&global.App.Config); err != nil {
fmt.Println(err)
}
return v
}
import (
"github.com/gin-gonic/gin"
"lwx1/bootstrap"
"lwx1/global"
"net/http"
)
func main() {
bootstrap.InitializeConfig()
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.String(http.StatusOK, "pong")
})
r.Run(":" + global.App.Config.App.Port)
}
3.GORM
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律