开源项目 ingredients
使用教程
1. 项目的目录结构及介绍
ingredients/
├── cmd/
│ └── ingredients/
│ └── main.go
├── internal/
│ ├── api/
│ │ └── api.go
│ ├── config/
│ │ └── config.go
│ ├── models/
│ │ └── models.go
│ └── utils/
│ └── utils.go
├── pkg/
│ └── some_package/
│ └── some_package.go
├── .gitignore
├── go.mod
├── go.sum
└── README.md
- cmd/: 包含项目的入口文件,通常是
main.go
文件所在的位置。 - internal/: 包含项目的内部逻辑代码,通常分为
api
、config
、models
和utils
等子目录。- api/: 包含 API 相关的代码。
- config/: 包含配置文件相关的代码。
- models/: 包含数据模型相关的代码。
- utils/: 包含工具函数相关的代码。
- pkg/: 包含项目的外部包或库,通常是一些可重用的代码。
- .gitignore: Git 忽略文件列表。
- go.mod: Go 模块定义文件。
- go.sum: Go 模块依赖的校验文件。
- README.md: 项目说明文档。
2. 项目的启动文件介绍
项目的启动文件位于 cmd/ingredients/main.go
。该文件是整个项目的入口点,负责初始化配置、启动服务等操作。
package main
import (
"github.com/schollz/ingredients/internal/api"
"github.com/schollz/ingredients/internal/config"
)
func main() {
// 初始化配置
cfg := config.LoadConfig()
// 启动 API 服务
api.Start(cfg)
}
- main.go: 项目的入口文件,负责加载配置并启动 API 服务。
3. 项目的配置文件介绍
项目的配置文件相关的代码位于 internal/config/config.go
。该文件负责加载和管理项目的配置。
package config
import (
"os"
"log"
)
type Config struct {
Port string
DBHost string
DBPort string
DBUser string
DBPassword string
DBName string
}
func LoadConfig() *Config {
cfg := &Config{
Port: os.Getenv("PORT"),
DBHost: os.Getenv("DB_HOST"),
DBPort: os.Getenv("DB_PORT"),
DBUser: os.Getenv("DB_USER"),
DBPassword: os.Getenv("DB_PASSWORD"),
DBName: os.Getenv("DB_NAME"),
}
if cfg.Port == "" {
cfg.Port = "8080"
}
log.Printf("Loaded config: %+v", cfg)
return cfg
}
- config.go: 负责加载和管理项目的配置,配置项包括端口、数据库连接信息等。配置通过环境变量加载,如果没有指定环境变量,则使用默认值。