Golang中的类型转换介绍

Golang中存在4种类型转换,分别是:断言、显式、隐式、强制。下面我将一一介绍每种转换使用场景和方法

一、断言类型转换

主要是判断变量是否可以转换成某一类型。断言主要用于变量是interface{}类型(接口类型)的情况,且变量值必须与要转换类型一致。可以细分为2种使用方式

  • 普通断言
  • switch断言

1.1 普通断言示例

// 定义一个接口类型变量
var userInfo interface{}
// 定义一个map类型变量
userInfoNew := map[string]int{"phoneNum": 123456,"age":      18,
}
// 由于interface{}可以接收任何类型变量,因此可以将map类型变量赋值给它
userInfo = userInfoNew
// 此时userInfo变量类型仍为interface{},但变量值是map类型,若想获取变量值需采用断言进行类型转换
res, _ := userInfo.(map[string]int)
fmt.Println("age:", res["age"])

输出结果:

age: 18

1.2 switch断言示例

var userInfo interface{} = "user info"
switch val := userInfo.(type) {
case float32:fmt.Printf("userInfo变量的类型为%T userInfo变量的值为%v\n", val, val)
case float64:fmt.Printf("userInfo变量的类型为%T userInfo变量的值为%v\n", val, val)
case int:fmt.Printf("userInfo变量的类型为%T userInfo变量的值为%v\n", val, val)
case bool:fmt.Printf("userInfo变量的类型为%T userInfo变量的值为%v\n", val, val)
case string:fmt.Printf("userInfo变量的类型为%T userInfo变量的值为%v\n", val, val)
default:fmt.Println("非已知类型")
}

输出结果:

userInfo变量的类型为string userInfo变量的值为user info

二、显示类型转换

细分为2种:

  • 表达式格式为:T(x),T为变量x要转换的最终类型。适用整型与浮点型互转,字节数组与字符串类型互转,结构体类型转换接口类型(反之不行)
  • 使用strconv包提供的方法
    1)strconv.Atoi():将字符串类型转成整数
    2)strconv.Itoa():将整数转成字符串类型

三、隐式类型转换

通常是程序内部自动转换,对开发人员无感知

四、强制类型转换

这个暂时未研究

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/90504.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python-表白小程序练习

测试代码 在结果导向的今天,切勿眼高于顶,不论用任何方法能转换、拿出实际成果东西才是关键,即使一个制作很简易的程序,你想将其最终生成可运行的版本也是需要下一番功夫的。不要努力成为一个嘴炮成功者,要努力成为一个有价值的人…

阿里云网络、数据中心和服务器技术创新优势说明

阿里云服务器技术创新、网络技术创新、数据中心技术创新和智能运维:云服务器方升架构、自研硬件、自研存储硬件AliFlash和异构计算加速平台,以及全自研网络系统技术创新和数据中心巴拿马电源、液冷技术等技术创新说明,阿里云百科aliyunbaike.…

conan入门(二十八):解决conan 1.60.0下 arch64-linux-gnu交叉编译openssl/3.1.2报错问题

上一篇博客《conan入门(二十七):因profile [env]字段废弃导致的boost/1.81.0 在aarch64-linux-gnu下交叉编译失败》解决了conan 1.60.0交叉编译boost/1.80.1的问题后,我继续交叉编译openssl/3.1.2时又报错了 conan install openssl/3.1.2 -pr:h aarch64-linux-gnu.…

Linux--进程间通信之命名管道

目录 前言概念命名管道的创建命名管道特性 命名管道通信建立连接资源处理 Client && Server通信总结 前言 上一篇文章介绍匿名管道的进程间通信只适合在具有血缘关系的进程间进行通信,但是如果我们想让两个不相关的进程实现通信,使用匿名管道显…

某企查ymg_ssr列表详情

js篇— 今天来看下某企查的列表详情–侵删 header发现这个参数 先断点一下 然后上一步 就到了这个地方 就开始扣一下这个js 三大段,先不解混淆了, 给a粘贴出来 ,去掉自执行 给结果稍微改一下 缺windows,开始补环境 直接上…

Linux常见指令(1)

Linux常见指令[1] 一.前言1.操作系统简述 二.Linux常见指令1.登录Xshell2.Linux下的常见命令1.pwd2.ls1.ls -a2.ls -d3.ls -l 3.cd Linux中的文件系统1.文件的相关知识2.Linux下目录结构的认识1.什么叫做路径?2.Linux的整体目录结构3.为什么要有路径呢?4.绝对路径与相对路径 …

常识判断 --- 科技常识

目录 力与热 光和声 航空成就 垃圾分类 百科知识 血型 二十四节气歌 春雨惊春清谷天 夏满忙夏暑相连 秋处露秋寒霜降 冬雪雪冬小大寒 力与热 光和声 航空成就 垃圾分类 百科知识 血型

ThemeForest – Canvas 7.2.0 – 多用途 HTML5 模板

ThemeForest 上的 HTML 网站模板受到全球数百万客户的喜爱。与包含网站所有页面并允许您在 WP 仪表板中自定义字体和样式的 WordPress 主题不同,这些设计模板是用 HTML 构建的。您可以在 HTML 编辑器中编辑模板,但不能在 WordPress 上编辑模板&#xff0…

35 LRU缓存

LRU缓存 题解1 双map(差2个testcases)题解2 哈希表双向链表(参考)题解3 STL:listunordered_map 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正…

SpringMVC+统一表现层返回值+异常处理器

一、统一表现层返回值 根据我们不同的处理方法,返回的数据格式都会不同,例如添加只返回true|false,删除同理,而查询却返回数据。 Result类 为此我们封装一个result类来用于表现层的返回。 public class Result {//描述统一格式…

国庆中秋喜相逢

鲁迅先生曾经说过,“一个国家的文学,就是那个民族心灵的缩影。”在这个充满着诗与远方的中秋佳节,我们迎来了又一个国庆节,不由自主地感慨起这个祖国的壮美与辉煌。 中秋节,是中华民族传统的佳节之一,也是…

关于:Java8新特性函数式编程 - Lambda、Stream流、Optional

函数式编程 stream流 1.常用方法 1.1中间操作 filter ​ 可以对流中的元素进行条件过滤&#xff0c;符合过滤条件的才能继续留在流中 例如&#xff0c;打印所有姓名长度大于1的作家的姓名 List<Author> authors getAuthors(); authors.stream().filter(author -&g…

publicPath:打包时的配置

vue项目&#xff0c;执行打包命令后&#xff0c;会在项目的根目录中自动创建一个文件夹dist,dist中的文件就是打包后的文件&#xff0c;只需要放到服务器中即可。 【默认情况下&#xff0c;用的绝对路径&#xff0c;需要放到服务器的根目录打开。】 如果希望放到子目录也能运行…

背靠背 HVDC-MMC模块化多电平转换器输电系统-用于无源网络系统的电能质量调节MATLAB仿真模型

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; MATLAB2021版本 模型简介&#xff1a; MMC-HVDC模拟背靠背HVDC模块化多电平换流器&#xff08;MMC&#xff09;作为为整个电网供电的电能质量调节系统。因此&#xff0c;模块化多电平逆变器作为远程端转换器…

前端判断: []+[], []+{}, {}+[], {}+{}

本质: 二元操作符规则 一般判断规则: 如果操作数是对象,则对象会转换为原始值如果其中一个操作数是字符串的话,另一个操作数也会转换成字符串,进行字符串拼接否则,两个操作数都将转换成数字或NaN,进行加法操作 转为原始数据类型的值的方法: Symbol.ToPrimitiveObject.protot…

C#并发编程的实现方式

一、多线程&#xff1a;是一种并发编程技术&#xff0c;它允许一个应用程序同时执行多个线程。每个线程都有自己的指令集和堆栈&#xff0c;可以在不同的CPU核心上并行运行&#xff0c;或者在一个CPU核心上通过时间片轮转的方式交替运行。多线程的主要优点是可以利用多核处理器…

八、3d场景的区域光墙

在遇到区域展示的时候我们就能看到炫酷的区域选中效果&#xff0c;那么代码是怎么编辑的呢&#xff0c;今天咱们就好好说说&#xff0c;下面看实现效果。 思路&#xff1a; 首先&#xff0c;光墙肯定有多个&#xff0c;那么必须要创建一个新的js文件来作为他的原型对象。这个光…

SolidWorks 入门笔记03:生成工程图和一键标注

默认情况下&#xff0c;SOLIDWORKS系统在工程图和零件或装配体三维模型之间提供全相关的功能&#xff0c;全相关意味着无论什么时候修改零件或装配体的三维模型&#xff0c;所有相关的工程视图将自动更新&#xff0c;以反映零件或装配体的形状和尺寸变化&#xff1b;反之&#…

NOSQL Redis 数据持久化

Redis 数据持久化 快照方式&#xff08;RDB&#xff0c;Redis DataBase&#xff09; 全量的 在指定的时间间隔能对你的数据进行快照存储。文件追加方式&#xff08;AOF&#xff0c;Append only File&#xff09;增量 记录每次对服务器写的操作,当服务器重启的时候会重新执行这…

时间管理器:高效管理你的时间

随着社会的发展和生活节奏的加快&#xff0c;时间管理成为了人们日常生活中不可或缺的一部分。每个人都希望能够高效利用时间&#xff0c;提高工作和生活的效率。然而&#xff0c;在忙碌的生活中&#xff0c;很多人常常感到无所适从、无法合理规划自己的时间。这时&#xff0c;…