Author mogd 2022-05-09
Update mogd 2022-05-09
Adage Don't live in the past.

目录

  • Go 语言中 switch 类型断言的用法
    • 原因
    • 错误例子
    • 推荐语法

Go 语言中 switch 类型断言的用法

Go 语言官方有推荐的编码规范,在这里记录一次编码中 switch 进行类型断言判断的标准用法

使用类型断言的建议是复用结果,而不是直接使用

原因

在一次编码中,vscode 出现一个黄色的警告 (不必要的类型断言):

assigning the result of this type assertion to a variable (switch docs := docs.(type)) could eliminate type assertions in switch cases

修改方法很简单,就是将类型断言的结果赋值给变量,而不是直接使用,否则可能触发 panic

错误例子

switch docs.(type) {case []interface{}:// Triggers a panic as "docs" doesn't hold// concrete type "interface" but "[]interface"fmt.Println(x.([]interface{}))
}

推荐语法

不要在 switch 语句中每次都使用类型断言,而是将类型断言的结果分配给变量并使用
类型断言提供对接口底层具体值访问
如果不将类型断言结果分配给变量,可能会触发 panic

switch docs := docs.(type) {case []interface{}:// Triggers a panic as "docs" doesn't hold// concrete type "interface" but "[]interface"fmt.Println(docs)
}

Go 语言中 switch 类型断言用法相关推荐

  1. c语言中switch的用法是什么?

    c语言中switch的用法是: 功能:switch语句是多分支选择语句.用来实现多分支选择结构.if语句只有两个分支可供选择,而实际问题中常常要用到多分支的选择.例如,学生成绩分类(90为" ...

  2. c语言中switch扑克牌花色,c语言中switch的用法

    c语言中switch的用法 c语言中switch的用法的用法如下:C语言还提供了另一种用于多分支选择的switch语句, 其一般形式为:switch(表达式){case 常量表达式1: 语句1;cas ...

  3. c语言中 char怎样用,C语言中char*和char[]用法区别分析

    C语言中char*和char[]用法区别分析 本文实例分析了C语言中char* 和 char []的区别.分享给大家供大家参考之用.具体分析如下: 一般来说,很多人会觉得这两个定义效果一样,其实差别很 ...

  4. c语言中switch结构,switch结构c语言

    C语言中switch结构的使用 用switch结构编制程序,输入1个学生的C语言课程考试成绩(百分制整形数因为case后面不能接范围,也就是说case后面是一个确实固定的常量.用下面的方法比较好, # ...

  5. scanf在c语言中的作用,c语言中scanf的基本用法

    前言 scanf()是C语言的格式输入函数,和printf函数一样被声明在stdio.h头文件中,它的基本使用很简单: 1 int a; 2 scanf("%d",&a); ...

  6. c语言time函数的作用,c语言中time函数的用法

    c语言中time函数的用法 c语言中time函数的用法的用法你知道吗?下面应届毕业生小编就跟你们详细介绍下c语言中time函数的用法的用法,希望对你们有用. c语言中time函数的用法的用法如下: 头 ...

  7. sizeof 在C语言的作用,C语言中的sizeof的用法详解

    C语言中的sizeof的用法详解 一.sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++.--等.它并不是函数.sizeof操作符以字节形式给出了其操作数的存储大小.操 ...

  8. C语言中定义常量的关键字是什么,C++_详解C语言中const关键字的用法,关键字const用来定义常量,如 - phpStudy...

    详解C语言中const关键字的用法 关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变,我想一定有人有这样的疑问,C语言中不是有#define吗,干嘛还要用const ...

  9. c语言中rand()的作用,c语言中的rand()函数用法

    rand() rand()函数作用:用来产生随机数,但是,rand()的内部实现是用线性同余法实现的,是伪随机数,由于周期较长,因此在一定范围内可以看成是随机的. rand()函数返回:返回一个范围在 ...

最新文章

  1. 程序员因开发速度太慢而遭公司起诉,索赔金额高达90万!
  2. java 数据反射_基本操作--反射填充数据
  3. 哪些模块可用于python性能分析_Python调用C模块以及性能分析
  4. 用python实现语音的传输功能_用Python打造一款智能语音聊天小软件!
  5. 华清远见智能小车视频服务器,华清远见版世界杯足球对抗赛,智能小车C位出道...
  6. FetchAI Case Study
  7. 在VS Code中直接调试Web程序,是怎样一种体验?
  8. 字符串匹配之KMP---全力解析
  9. js模块的封装(-)
  10. JAVA语言基础-面向对象(方法重写概述及其应用)
  11. sylixos pci
  12. 实现类去实现接口的时候,将接口的注释一起重写出来设置
  13. Ubuntu安装deb包
  14. 宝塔面板配置服务器代理
  15. SMAP数据产品介绍与下载方法
  16. 美团2024届暑期实习第一轮后端笔试详解
  17. CString怎么转成LPVOID的问题 vc/mfc
  18. html代码多媒体播放器,6 个基于 HTML5 实现的多媒体播放器
  19. 会Vue还有必要学React吗?
  20. 常数和基本初等函数导数公式推导

热门文章

  1. itext对已经存在的pdf添加页眉页脚
  2. JAVA学习-基础部分【1】
  3. Android wifi iw介绍
  4. 各种CAD工艺流程图分享/锅炉、反渗透、磷铁矿选矿、水处理、SCR法处理硝酸尾气、选煤厂、焦煤矿选煤、电镀污水处理、聚丙烯腈原丝生产、合成氨脱硫工段、纯水系统、烟气脱硫、饮料车间设计……工艺流程图
  5. 大国宪制_为什么妥协是伟大的设计超级大国
  6. 攻击国土资源专网!!!勒索病毒应对指南
  7. better-scroll的使用
  8. 敖丙的 Java/后端学习路线
  9. render是什么意思
  10. 第二届阿里云 ECS CloudBuild 开发者大赛火热来袭! 51万奖金池,等你来挑战