Golang & go mod 简介

目标:

  1. 初步使用 go mod 进行 modules 包管理
    • go 版本 & gvm
    • go mod init tidy go.mod go.sum //indirect ?
  2. 了解 gin,简单 demo /ping => pong

Gin

Gin:Golang 的一个微框架,性能极佳。

$ go get -u github.com/gin-gonic/gin

demo

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() // listen and serve on 0.0.0.0:8080
}

项目分层 & 配置管理

首先,在一个初始项目开始前,大家都要思考一下

  • 程序的文本配置写在代码中,好吗?
  • API 的错误码硬编码在程序中,合适吗?
  • db 句柄谁都去Open,没有统一管理,好吗?
  • 获取分页等公共参数,谁都自己写一套逻辑,好吗?

显然在较正规的项目中,这些问题的答案都是不可以,为了解决这些问题,我们挑选一款读写配置文件的库,目前比较火的有 viper,有兴趣你未来可以简单了解一下,没兴趣的话等以后接触到再说。

分层 & 项目包调用

$ mkdir conf		# 配置
$ mkdir models		# 建模
$ mkdir routers	# 路由
$ mkdir utils		# 公共
package routers

import (
	"github.com/gin-gonic/gin"
)

// InitRouter initialize routing information
func InitRouter() {
	r := gin.Default()
	r.GET("/ping", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})

	r.Run("0.0.0.0:7375")
}
package main

import (
	"ux/routers"
)

func main() {
	routers.InitRouter()
}

配置管理

程序配置写在代码中,好吗?会产生哪些问题?

程序环境如何管理?通常会有哪些环境?开发、测试、预发、线上 …

哪些需要写入配置?应用数据、数据库信息、外部调用地址 …


目标:

  1. 了解配置管理,使用 viper 获取配置文件及其值
  2. 全局调用配置

viper 配置&读取

【转】golang常用库:配置文件解析库/管理工具-viper使用

全局调用配置项

  • 提取 ymPath 为传参
  • main.go 控制环境(后期可增加 CLI)
  • routers.go 调用 conf

models 建模 & 表结构导入

gorm,对开发人员友好的 ORM 框架,英文文档

$ go get -u github.com/jinzhu/gorm

连接 MySQL 数据库

open mysql error(Error 1045: Access denied for user ‘root’@‘localhost’ (using password: YES))

提升效率 —— air

【转】Go 每日一库之 air

API 路由注册 & 版本管理

  • 完成TODO 标签的接口定义和编写