conf/dev-config.yaml
serverName: "golang入门"
ginConfig:
host: "127.0.0.1"
port: 8080
conf/config.go
package conf
type GinConfig struct {
Host string `mapstructure:"host"`
Port int32 `mapstructure:"port"`
}
type ServerConfig struct {
ServerName string `mapstructure:"serverName"`
GinConfig `mapstructure:"ginConfig"`
}
internal/internal.go
package internal
import (
"study/conf"
"github.com/spf13/viper"
)
var ServerConfig conf.ServerConfig
func init() {
v := viper.New()
v.SetConfigFile("conf/dev-config.yaml")
err := v.ReadInConfig()
if err != nil {
panic(err)
}
v.Unmarshal(&ServerConfig)
}
main.go
package main
import (
"fmt"
"net/http"
"study/internal"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.GET("/", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"msg": "ok",
})
})
h := internal.ServerConfig.GinConfig.Host
p := internal.ServerConfig.GinConfig.Port
addr := fmt.Sprintf("%s:%d", h, p)
fmt.Println(addr)
r.Run(addr)
}