当前位置: 首页 > news >正文

golang使用泛型

项目中有个需求,需要实现一个缓存请求结果的函数,可以接收传入不同的结构体参数和不同用这个参数去请求第三方接口的函数。为了实现需求我用到golang的泛型,这里记录一下。

type Aa struct {A  stringAA string
}
type AaResp struct {A  stringAA string
}func ARequest(param Aa) AaResp {fmt.Println(param)//请求第三方获取AaRespreturn AaResp{}
}type Bb struct {B  stringBB string
}
type BbResp struct {B  stringBB string
}func BRequest(param Bb) BbResp {fmt.Println(param)//请求第三方获取AaRespreturn BbResp{}
}type CachaStruct struct {Result      anycacheString string
}func Cache[T any, R any](param T, requestFun func(param T) R, cacheKey string) R {var result RcacheData := CachaStruct{cacheString: cacheKey,Result:      &result,}if getCache(cacheKey, cacheData) {return cacheData.Result} else {result = requestFun(param)cacheData.Result = &result//setCache(cacheData) //这里懒得写set了。}return cacheData.Result
}
func getCache(cacheKey string, cacheData CachaStruct) bool {//查询cache是否存在,如果存在则返回return true
}// 然后就可以通用了
func main() {aParam := Aa{A:  "111",AA: "111",}var aResp AaRespaResp = Cache(aParam, ARequest, aParam.A)fmt.Println(aResp)bParam := Bb{B:  "111",BB: "111",}var bResp BbRespbResp = Cache(bParam, BRequest, bParam.B)fmt.Println(bResp)
}
http://www.dtcms.com/a/525382.html

相关文章:

  • 自己做的小说网站要交税吗免费的站内推广方式有哪些
  • Anthropic将使用100万个TPU训练大模型
  • 阿里云服务器网站建设找销售的网站
  • 【PPT导出高清tif图】利用PPT将子图组合并导出高清图片
  • 怎样做加入购物车的网站示范建设验收网站
  • 广州做网站信息らだ天堂中文在线
  • 小说网站怎么做用户画像网站建设相关技术
  • CredentialProvider交互式登录实现
  • wap建站程序六年级做的网站的软件下载
  • seo网站建设厦门网站添加地图
  • 如何访问国外网站网站开发技术路线
  • 使用 OpenAI SDK 调用通义千问(Qwen)模型:从简单对话到结构化生成
  • ESP32使用笔记(基于ESP-IDF):组件注册表介绍与使用详解
  • 自己做的网站绑定域名如何修改wordpress的登录
  • 机器视觉的物流拆码垛应用
  • react-native实现多列表左右滑动+滚动TabBar悬停
  • 自己能注册网站吗公司网站备案网站名称有什么用
  • Web后端开发总结
  • 阿里万网站建设怎么重建wordpress
  • 关于蓝牙SPP配置的详细过程,之前的有所缺少细节
  • 湛江专业网站建设深圳专业建站多少钱
  • 2026计算机毕业设计课题推荐
  • 好网站在哪里上海知名网站建设公司
  • 【Unity】实现UI Spine动态换皮肤(SkeletonGraphic)
  • 从数据仓库到数据中台再到数据飞轮:我的数据技术成长之路
  • MIT:塑造未来的技术引擎
  • 查错控制方法-上(奇偶校验与循环冗余校验)
  • NVIDIA cuLitho 重新定义计算光刻的GPU加速
  • 水位雨量监测站:数据实时辅助防汛指挥
  • 网站总体设计方案网站首页不见怎么做