Go是一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。它能让构造简单、可靠且高效的软件变得容易。
- 简洁、快速、安全
- 并行、有趣、开源
- 内存管理、数组安全、编译迅速
- 更丰富的内置类型
- 函数多返回值
- 错误处理
- 匿名函数和闭包
- 类型和接口
- 并发编程
- 语言交互性
Go在1.18后引入了泛型设计,怎么让增加泛型的Go,在开发Web上变得更加高效。
Go在引入泛型之前,只能用interface{}进行沾包。这样做的话想要对所有的参数进行统一绑定参数以及统一处理返回值是不太友好的。
原处理思路:使用反射获取处理的函数,绑定入参,Call函数,函数内部写response。
现处理思路:定义函数、response格式,绑定函数参数,处理返回值。
type Response struct {
Code int `json:"code"`
Msg string `json:"msg"`
Data any `json:"data"`
}
// 这里的Response只是针对于http response body的结构,并不是http response本身。
因为使用Gin作为Web框架,想要更好的结合Gin处理,泛型函数的返回值为 gin.HandlerFunc
func ParseFunc[T any](fn ParseFuncType[T], title string) gin.HandlerFunc
绑定参数:
param := new(T)
// 根据入参类型分配内存
err = c.ShouldBind(¶m)
if err != nil {
...
}
err = c.ShouldBindUri(¶m)
if err != nil {
...
}
response, err := fn(c, *param)
...
这样就能统一处理request