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

烟台网站建设服务新钥匙网站建设

烟台网站建设服务,新钥匙网站建设,最低的成本做网站,百度账户推广登陆golang 函数式编程库samber/mo使用#xff1a; Either 如果您不了解samber/mo库#xff0c; 请先阅读第一篇 Option 结构定义 有时候我们不确定值的类型#xff0c; 一个值可能是int#xff0c; 也可能是string#xff0c; 这时候我们可以使用Either类型。 Either类型是…golang 函数式编程库samber/mo使用 Either 如果您不了解samber/mo库 请先阅读第一篇 Option 结构定义 有时候我们不确定值的类型 一个值可能是int 也可能是string 这时候我们可以使用Either类型。 Either类型是一种表示两种可能值的类型 和python中的 Optional类似。 结构定义如下 type Either[L any, R any] struct {isLeft boolleft Lright R }其中 isLeft表示值的类型 left和right分别表示两种可能的值。 如果isLeft为true 则left有值 right为nil 如果isLeft为false 则right有值 left为nil。 构造函数 主要有一下两个: mo.Left() 函数定义为 func Left[L any, R any](value L) Either[L, R] L, R分别表示两种可能的值的类型 value表示左值。 doc mo.Right() 和Left类似 doc 使用示例 Either类型最常见的用法是处理错误 正好适用于go语言。 因为go语言没有提供 try...catch 语法 优点是错误显式处理可以避免忘记捕获异常 缺点是代码不够优雅。 举个例子 如果我们用go自带的error处理 代码如下 package mainimport (errorsfmt )var (ErrRedisNotFound errors.New(redis not found)ErrDBNotFound errors.New(db not found) )func readFromRedis() (string, error) {// lets simulate a failed operationreturn , ErrRedisNotFound }func readFromDB() (string, error) {// lets simulate a successful operationreturn user:1:Samber, nil }func main() {data, err : readFromRedis()if err ! nil {fmt.Println(redis not found, read from db)data, err readFromDB()if err ! nil {fmt.Println(db not found)} else {fmt.Println(data from db is:, data)}} else {fmt.Println(data from redis, data)} } 可以看到里面充满了if else 代码中的逻辑结构表达得不够清晰。 使用Either处理错误的代码如下 package mainimport (errorsfmtgithub.com/samber/mo )var (ErrRedisNotFound errors.New(redis not found)ErrDBNotFound errors.New(db not found) )func readFromRedis() mo.Either[string, error] {// lets simulate a failed operationreturn mo.Right[string, error](ErrRedisNotFound) }func readFromDB() mo.Either[string, error] {// lets simulate a success operationreturn mo.Left[string, error](user:1:Samber) }func main() {readFromRedis().Match(func(data string) mo.Either[string, error] {fmt.Println(data from redis, data)return mo.Left[string, error](data)},func(err error) mo.Either[string, error] {fmt.Println(redis not found, read from db)return readFromDB().Match(func(data string) mo.Either[string, error] {fmt.Println(data from db is:, data)return mo.Left[string, error](data)},func(err error) mo.Either[string, error] {fmt.Println(db not found)return mo.Right[string, error](err)},)},) } 代码虽然更长了但是逻辑结构很清晰
http://www.pierceye.com/news/263525/

相关文章:

  • 哪个网站可以领手工活在家做wordpress heroku
  • 为什么没有网站做图文小说电子商务网站开发的课程介绍
  • 在哪个网站做问卷好单页面网站推广
  • 专业网站建设模块维护静海网站建设
  • 国内前十网站建设公司龙之网官网
  • 昆山做网站的公昆山做网站的公司司网站开发与设计岗位职责
  • 网站投注员怎么做做旅游项目用哪家网站好
  • 环县网站怎么做咸阳网站开发公司地址
  • 重庆巴南网站制作wordpress外贸建站公司
  • 桂林旅游网站制作公司软件开发公司属于什么行业
  • 网站 备案 中国 名字老薛主机 wordpress
  • 有什么网站可以做投票功能合肥房地产交易网
  • 世界网站广西建设工程质检安全网站
  • 建设银行网站会员基本信息wordpress主题图片丢失
  • 找人做网站需要注意什么问题中国建设信用卡网站
  • 公众号制作的网站开发营销平台推广
  • 河源手机网站制作网站页面效果图怎么做
  • 公司网站建设要注意的问题wordpress上传图片x
  • 网站开发PHP留言本快代理
  • 温州做网站价格怎么做简易手机网站
  • 东营网站建设制作广州物流网站建设
  • 新乡建设工程信息网站kindeditor wordpress
  • 做一个京东这样的网站需要多少钱上网导航网页是哪家公司
  • 网站开发到上线的流程外贸网站 开源站建设行吗
  • 神华科技网站建设个人网站做哪些流程
  • 怎么查看网站空间是否到期如何用百度上传图片做网站外链
  • 可以做问卷挣钱的网站酒泉建设局网站
  • 阿里万网怎么做网站向百度提交网站
  • 杭州模板网站好网站漂浮广告怎么做
  • a站为什么不火了站群宝塔批量建站