写一个通用的方法,更具type字段区分不同类型,入参不同,返回值也不同
POST方式,type=8带在路径中,其他业务相关的参数放在body里
如果用gin框架,可以用c.GetQuery(key)获取type类型
1 | //解析query |
因为入参不同,返回值也不同,所以req和res都需要用interface{}类型,而不能是某个特定的struct
具体的方法格式如下:
functionName(ctx context.Context, typ int, req interface{}) (res interface{}, err error)
通过switch case,不同类型进行不同处理:
1 | switch typ { |
可见,func1type的入参是一个结构体,而原始的req是一个interface{}
如上采用了JSON序列化的方式,先将interface类型的入参json.Marshal,再将得到的byte类型的变量reqByte进行 json.Unmarshal(reqByte,&定义的结构体)
这样就实现了从interface到struct的转换。
还有一种方式,是 使用断言,做强制转换
可参考
Golang interface{}转struct的两种方法
原文链接: https://dashen.tech/2019/12/21/Go-interface-转struct/
版权声明: 转载请注明出处.