Go语言类型switch

switch还可以用于判断变量类型。使用方式为T.(type),即在变量后加上.(type)。见代码:

package main

import (

"fmt"

)

func main() {

var a interface{}

a = "abc"

switch t := a.(type) {

case string:

fmt.Printf("string %s\n", t)

case int:

fmt.Printf("int %d\n", t)

default:

fmt.Printf("unexpected type %T", t)

}

}

输出结果为:

string abc

如果将上面的:

var a interface{}

a = "abc"

这两句,合成一句:

a := "abc"

编译就会出错:

cannot type switch on non-interface value a (type string)

不能在一个非接口类型的变量上使用type switch。

也就是说 type switch只能用于接口的变量。

时间: 2024-11-17 20:45:24

Go语言类型switch的相关文章

PROCESS_YIELD()宏和C语言的switch语句< contiki学习笔记之七>

写在前面:  按照main()函数的代码一行一行的分析,该是看到了 etimer_process 这个位置.但是etimer_process实现里的一个宏 PROCESS_YIELD()引出了很多故事,于是单独把整个宏的东西整理成笔记,贴出来,和学习contiki的伙伴分享. 在说这个宏之前,得先记下c 语言的switch()遭遇. switch()从表面上来看,或许应该是非常简单的问题--C语言的基本功吧.它的使用方式,按照常规来说,如下图所示: 好吧,那就贴一段常规的代码: 1 int ma

C语言类型强制转换

C语言类型强制转换 强制类型转换是通过类型转换运算来实现的.其一般形式为: (类型说明符) (表达式) 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型. 目录 1基本介绍 2注意事项 1基本介绍编辑 强制类型转换是通过类型转换运算来实现的.其一般形式为:(类型说明符)(表达式)其功能是把表达式的运算结果强制转换成类型说明符所表示的类型.自动转换是在源类型和目标类型兼容以及目标类型广于源类型时发生一个类型到另一类的转换.例如: (float) a 把a转换为实型,(int)(x+y)

C#语言类型总结

C#语言类型在目前的学习中大致有四种类型是比较常见,分别是char.string.int.double,下面总结一下这4种语言的知识点. 1.定义 char字符类型:单个文字(汉字.字母.数字.标点符号),用成对英文单引号表示. string字符串类型:不限数量文字(汉字.字母.数字.标点符号),用成对的英文双引号表示. int整数类型:表示整数,直接书写. double小数类型:表示包含小数点的数字,直接书写. 2.数据运算 (1)int与double的运算 支持运算:加(+)减(-)乘(*)

oracle数据库语言类型

oracle数据库语言类型一般分为五大类型 1 DDL(data definition language)数据定义语言 CREATE TABLE :创建表 ALTER TABLE :修改表 DROP TABLE:删除表(对表整体删除,表结构也不存在了) TRUNCATE TABLE :删除表(删除所有行,表结构还在) 2 DML(data Manipulation language)数据操纵语言 INSERT :插入 UPDATE :更新 DELETE:删除 3 DQL(Data Query L

Github:修改Github仓库中项目语言类型

前述 有的时候我们把项目上传到github仓库上时语言会显示错误语言 比如一个java项目可能因为有js文件的存在而被识别为js项目 这种时候我们就要手动去修改Github的项目语言类型 解决办法 在Github中,采用Linguist来自动识别代码语言 我们要做的就是对 linguist-language 进行赋值,强制它识别某一种语言文件为 Java 语言 1 *.js linguist-language=java 2 *.html linguist-language=java 如上,是将

c语言类型修饰符及内存

太难了,嵌入式这条路是个大坑啊,学的东西太多,但没办法,既然选择了这条路,坚持走下去吧,打好基础,铺好每一块砖,才能走的更加稳健 今天来学习一下c语言类型修饰符及内存分布 1.auto int a; 默认在内存 2.register int a; 限制变量定义在寄存器上的修饰符 编译器会尽量安排CPU的寄存器去存放这个a,如果寄存器不足,a还是放在内存中 取地址符号&对a不起作用 3.static 应用场景: 1.函数内的变量 2.函数外的变量 3.函数的修饰符(函数也是一个变量) int fu

数据库类型对应Java语言类型表

下表列出了基本 SQL Server.JDBC 和 Java 编程语言数据类型之间的默认映射: SQL Server 类型 JDBC 类型 (java.sql.Types) Java 语言类型 bigint BIGINT long timestamp binary BINARY byte[] bit BIT boolean char CHAR String decimal money smallmoney DECIMAL java.math.BigDecimal float DOUBLE dou

使用ctypes实现python类型和C语言类型之间的相互转化

楔子 我们知道可以使用ctypes调用扩展模块,主要是调用扩展模块中使用C编写好的函数,但这些函数肯定都是需要参数的,还有返回值,不然编写扩展模块有啥用呢.那么问题来了,不同的语言变量类型不同,所以python能够直接往C编写的函数中传参吗?显然不行,所以ctypes还提供了大量的类,帮我们将python中的类型转成C语言中的类型. python类型与C语言类型之间的转换 我们说了,python中类型不能直接往C语言的函数中传递(整型是个例外),那么ctypes就提供了很多的类可以帮助我们将py

[每天一个知识点]18-Java语言-在switch中接受String类型

在Java7中增加了一个新特性,switch可以接受String类型的变量,这就省下了书写大量if ("xxx".equals(yyy))的繁复工作.示例代码就免了,仅仅是一个数据类型的改变而已,如果会用原来的switch而在5分钟内搞不定String类型的switch,建议还是放弃做程序员吧-- 至于内部实现,java一点都没增加新内容,其实代码是被转换成了这个样子 switch (xxx.hashCode()) { case 1024: // 假设原来是"aaa"