golang中逗号ok模式_转
,ok,第一个参数是一个值或者nil,第二个参数是true/false或者一个错误error。在一个需要赋值的if条件语句中,使用这种模式去检测第二个参数值会让代码显得优雅简洁。这种模式在go语言编码规范中非常重要。下面总结了所有使用这种模式的例子:
1. 在函数返回时检测错误
value, err := pack1.Func1(param1)
if err != nil {
    fmt.Printf(“Error %s in pack1.Func1 with parameter %v”, err.Error(), param1)
    return err
}
// 函数Func1没有错误:
Process(value)
e.g.: os.Open(file) strconv.Atoi(str)
这段代码中的函数将错误返回给它的调用者,当函数执行成功时,返回的错误是nil,所以使用这种写法:
func SomeFunc() error {
    …
    if value, err := pack1.Func1(param1); err != nil {
        …
        return err
    }
    …
    return nil
}
这种模式也常用于通过defer使程序从panic中恢复执行。
2. 检测映射中是否存在一个键值:key1在映射map1中是否有值?
if value, isPresent = map1[key1]; isPresent {
        Process(value)
}
3. 检测一个接口类型变量var是否包含了类型T:类型断言
if value, ok := var.(T); ok {
    Process(value)
}
// 接口类型varI没有包含类型T
4. 检测一个通道ch是否关闭
    for {
        if input, open := <-ch; !open {
            break // 通道是关闭的
        }
        Process(input)
    }
转自:Go入门指南 看云
golang中逗号ok模式_转的更多相关文章
- golang中的选项模式
		索引 https://waterflow.link/articles/1663835071801 当我在使用go-zero时,我看到了好多像下面这样的代码: ... type ( // RunOpti ... 
- jquery中如何以逗号分割字符串_百度知道
		body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ... 
- golang中Context的使用场景
		golang中Context的使用场景 context在Go1.7之后就进入标准库中了.它主要的用处如果用一句话来说,是在于控制goroutine的生命周期.当一个计算任务被goroutine承接了之 ... 
- golang中发送http请求的几种常见情况
		整理一下golang中各种http的发送方式 方式一 使用http.Newrequest 先生成http.client -> 再生成 http.request -> 之后提交请求:clie ... 
- [转]Golang 中使用 JSON 的小技巧
		taowen是json-iterator的作者. 序列化和反序列化需要处理JSON和struct的关系,其中会用到一些技巧. 原文 Golang 中使用 JSON 的小技巧是他的经验之谈,介绍了一些s ... 
- Golang中如何正确的使用sarama包操作Kafka?
		Golang中如何正确的使用sarama包操作Kafka? 一.背景 在一些业务系统中,模块之间通过引入Kafka解藕,拿IM举例(图来源): 用户A给B发送消息,msg_gateway收到消息后,投 ... 
- 制作类似ThinkPHP框架中的PATHINFO模式功能
		一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ... 
- 基础知识 - Golang 中的正则表达式
		------------------------------------------------------------ Golang中的正则表达式 ------------------------- ... 
- 制作类似ThinkPHP框架中的PATHINFO模式功能(二)
		距离上一次发布的<制作类似ThinkPHP框架中的PATHINFO模式功能>(文章地址:http://www.cnblogs.com/phpstudy2015-6/p/6242700.ht ... 
随机推荐
- ShenZhenXiaoLengHuanYou Technology Co.,Ltd  技术支持网站
			本网页为ShenZhenXiaoLengHuanYou Technology Co.,Ltd 团队的技术支持网址,如果在我们开发的游戏中遇到任何问题,欢迎联系我们! QQ:2535510006 邮箱: ... 
- C# 将DataTable数据写入到txt文件中
			见代码: /// <summary> /// 将DataTable里面的内容写入txt文件 /// </summary> /// <param name="dt ... 
- dva+umi+antd项目从搭建到使用
			先创建一个新项目,具体步骤请参考https://www.cnblogs.com/darkbluelove/p/11338309.html 一.添加document.ejs文件(参考文档:https:/ ... 
- 【记录】【solr】solr7.2.1原子更新
			就是说只更新指定的字段,没有的字段则添加,有的字段则替换,没有指定更新的字段不会被删除 原来的数据只有id和name这两个字段 java操作,更新一个字段,id用于指定数据 结果,name字段没有被删 ... 
- 如何理解JavaScript的原型和原型链
			在现在的业务开发中,应该很少人在写原生JavaScript了,大家都一股脑地扑在各个框架上.本来,这些框架对于业务和开发者来说是一种福音,减少了各种各样的开发痛点,但是带来的负面问题就是对于开发者来说 ... 
- 浅谈PHP中pack、unpack的详细用法
			转自:https://segmentfault.com/a/1190000008305573 PHP中有两个函数pack和unpack,很多PHPer在实际项目中从来没有使用过,甚至也不知道这两个方法 ... 
- static binding/dynamic binding
			static binding/dynamic binding class Person { private void who() { System.out.println("Inside p ... 
- [转帖]70亿!以色列间谍产品公司NSO要被卖掉了
			70亿!以色列间谍产品公司NSO要被卖掉了 2017-06-14 11:11 https://www.sohu.com/a/148739327_257305 E安全6月14日讯以色列的网络能力处于世界 ... 
- day18——re正则表达式
			day18 re模块--正则表达式 匹配方法 findall():从字符串中全部查找内容,返回一个列表 s = "meet_宝元_meet" print(re.findall(&q ... 
- ubuntu 安装和配置 GitLab
			一.概述 GitLab 是一个基于 Web 的开源 Git 软件仓库管理器,用 Ruby 编写,包括 wiki,问题管理,代码审查,监控以及持续集成和部署.它使开发人员能够创建,审查和部署他们的项目. ... 
