摘要:
一、反射的基本概念 (一)什么是反射 反射可以再运行时动态获取变量的各种信息,比如变量的类型、值等 如果时结构体变量,还可以获取到结构体本身的各种信息,比如结构体的字段、方法 通过反射,还可以修改变量的值、调用方法 不过使用反射,需要引入一个包:reflect 典型用法是用静态类型interface 阅读全文
摘要:
在gin中通过如下代码可以正常的启动一个服务: package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { router := gin.Default() router.GET("/index", func( 阅读全文
摘要:
一、模板引入 在进行Web开发中,你可能进行的项目是前后端不分离的情况,此时需要将html与后端放入一个工程中,gin框架支持这种做法,需要通过 LoadHTMLGlob() 或 LoadHTMLFiles()。 (一)LoadHTMLFiles 故名思义就是加载文件 1、main.go packa 阅读全文
摘要:
一、表单基本校验 Gin是一个Web框架,提供Web服务,所以很多功能是通过第三方插件集成进去的,这里使用了https://github.com/go-playground/validator来处理的。它实现了结构体值验证以及基于标签的单个字段。所以可以将请求体绑定到结构体模型上。 需要在绑定的字段 阅读全文
摘要:
路由分组顾名思义就是将具有一类功能的路由放到一起,有时也会因为不同版本的路由分成一个组: func main() { router := gin.Default() // Simple group: v1 v1 := router.Group("/v1") { v1.POST("/login", l 阅读全文
摘要:
一、Gin中间件基础 中间件可以实现在整个请求或者响应的生命周期过程中对请求或者响应做一些额外的处理,比如说在每个请求进入路由匹配、函数处理前进行权限校验,避免在业务函数中进行处理,非常方便。那么在Gin中是如何做的呢? ... router := gin.Default() ... 在gin中的D 阅读全文
摘要:
一、路径参数 func main() { router := gin.Default() // This handler will match /user/john but will not match /user/ or /user router.GET("/user/:name", func(c 阅读全文
摘要:
一、单体应用 谈到微服务必定要说到之前的应用架构,比如说单体应用: 单体应用结构比较简单,所有的功能都集中在一起,所以被称为单体。当然这种结构有优点,但是也有缺点。 1、优点 架构简单,开发周期短,容易上手,维护成本低,适合小型项目。 2、缺点 耦合性太高,所有的功能都集中在一起 如果说现在是一个P 阅读全文
摘要:
一、什么是Gin Gin 是一个用 Go (Golang) 编写的 web 框架。 它是一个类似于 martini 但拥有更好性能的 API 框架, 由于 httprouter,速度提高了近 40 倍。 如果你是性能和高效的追求者, 你会爱上 Gin.。它具有如下特征: 快速 基于 Radix 树的 阅读全文
摘要:
一、rpc之HelloWorld Go语言的rpc包的路径为net/rpc: 1、server.go package main import ( "net" "net/rpc" ) type HelloWorldService struct { } func (s *HelloWorldServic 阅读全文