【Go实战 | 电商平台】(2) 项目结构及配置文件初始化

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 文章目录1. 必备环境与推荐软件1.1 必备环境1.2 推荐软件2. 项目初始化3. 配置文件初始化3.1 config.ini3.2 conf.go3.3 main函数

文章目录

1. 必备环境与推荐软件

1.1 必备环境

1.2 推荐软件

2. 项目初始化

3. 配置文件初始化

3.1 config.ini

3.2 conf.go

3.3 main函数

1. 必备环境与推荐软件

1.1 必备环境

mysql

redis

golang

1.2 推荐软件

goland

navicat

runapi

2. 项目初始化

创建项目

image.png


创建文件夹

image.png


项目结构

mall/
├── api
├── cache
├── conf
├── middleware
├── model
├── pkg
│  ├── e
│  ├── util
├── routes
├── serializer
└── service


- api : 用于定义接口函数
- cache : 放置redis缓存
- conf : 用于存储配置文件
- middleware : 应用中间件
- model : 应用数据库模型
- pkg/e : 封装错误码
- pkg/util : 工具函数
- routes : 路由逻辑处理
- serializer : 将数据序列化为 json 的函数
- service : 接口函数的实现


go mod 管理包依赖

image.png


换源

image.png


3. 配置文件初始化

在conf文件夹下创建config.ini和conf.go

image.png


3.1 config.ini

先进行mysql的配置


#debug开发模式,release生产模式
[service]
AppMode = debug
HttpPort = :3000
[mysql]
Db = mysql
DbHost = 127.0.0.1
DbPort = 3306
DbUser = root
DbPassWord = root
DbName = mail_db

3.2 conf.go

配置文件

var (
  AppMode     string
  HttpPort    string
  Db            string
  DbHost        string
  DbPort        string
  DbUser        string
  DbPassWord    string
  DbName        string
)


读取配置文件

func Init() {
  //从本地读取环境变量
  file, err := ini.Load("./conf/config.ini")
  if err != nil {
  fmt.Println("配置文件读取错误,请检查文件路径:", err)
  }
  LoadServer(file)
  LoadMysqlData(file)
  //MySQL
  path := strings.Join([]string{DbUser, ":", DbPassWord, "@tcp(", DbHost, ":", DbPort, ")/", DbName, "?charset=utf8&parseTime=true"}, "")
  model.Database(path)
}


加载配置

func LoadServer(file *ini.File) {
  AppMode = file.Section("service").Key("AppMode").String()
  HttpPort = file.Section("service").Key("HttpPort").String()
}
func LoadMysqlData(file *ini.File) {
  Db = file.Section("mysql").Key("Db").String()
  DbHost = file.Section("mysql").Key("DbHost").String()
  DbPort = file.Section("mysql").Key("DbPort").String()
  DbUser = file.Section("mysql").Key("DbUser").String()
  DbPassWord = file.Section("mysql").Key("DbPassWord").String()
  DbName = file.Section("mysql").Key("DbName").String()
}

3.3 main函数

在main函数中进行初始化配置

image.png


还有一些配置没有写进去的。redis、七牛云的配置啥的。


我们后面用到的时候才补上去吧。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
Shell Go API
Go语言grequests库并发请求的实战案例
Go语言grequests库并发请求的实战案例
|
2月前
|
关系型数据库 MySQL Go
go抽取mysql配置到yaml配置文件
go抽取mysql配置到yaml配置文件
|
2月前
|
安全 大数据 Go
深入探索Go语言并发编程:Goroutines与Channels的实战应用
在当今高性能、高并发的应用需求下,Go语言以其独特的并发模型——Goroutines和Channels,成为了众多开发者眼中的璀璨明星。本文不仅阐述了Goroutines作为轻量级线程的优势,还深入剖析了Channels作为Goroutines间通信的桥梁,如何优雅地解决并发编程中的复杂问题。通过实战案例,我们将展示如何利用这些特性构建高效、可扩展的并发系统,同时探讨并发编程中常见的陷阱与最佳实践,为读者打开Go语言并发编程的广阔视野。
|
3月前
|
消息中间件 缓存 Kafka
go-zero微服务实战系列(八、如何处理每秒上万次的下单请求)
go-zero微服务实战系列(八、如何处理每秒上万次的下单请求)
|
3月前
|
设计模式 Java 数据库连接
|
3月前
|
消息中间件 SQL 关系型数据库
go-zero微服务实战系列(十、分布式事务如何实现)
go-zero微服务实战系列(十、分布式事务如何实现)
|
3月前
|
消息中间件 NoSQL Kafka
go-zero微服务实战系列(九、极致优化秒杀性能)
go-zero微服务实战系列(九、极致优化秒杀性能)
|
JSON 前端开发 Java
Go语学习笔记 - 项目规范结构调整 | Web框架Gin(三)
Go语学习笔记 - 项目规范结构调整 | Web框架Gin(三)
Go语学习笔记 - 项目规范结构调整 | Web框架Gin(三)
【Go开源宝藏】Go-Doc 自动生成项目结构目录
目录 写在前面 1. 下载 2. 运行 3. 查看
168 0
【Go开源宝藏】Go-Doc 自动生成项目结构目录