【Go - 类型断言】

news/2024/9/19 1:17:01/ 标签: golang, 服务器, 开发语言, 后端

前提重点:类型断言,先转换 ,再断言(判断是否转换成功)

Go语言中,类型断言用于将接口类型的变量转换为具体类型。类型断言的语法如下:

value, ok := interfaceVariable.(ConcreteType)
  • interfaceVariable 是一个接口类型的变量。
  • ConcreteType 是你希望将接口变量转换成的具体类型。
  • value 是转换后的具体类型的值。
  • ok 是一个布尔值,表示类型断言是否成功。如果成功,oktrue,否则为 false

如果类型断言失败,okfalsevalue 将是具体类型的零值。

示例

以下是一个具体的例子,演示如何使用类型断言:

package mainimport ("fmt"
)func main() {var i interface{} = "hello"// 类型断言,将接口类型变量 i 转换为字符串类型s, ok := i.(string)if ok {fmt.Println("String value:", s)} else {fmt.Println("Type assertion failed")}// 尝试将接口类型变量 i 转换为 int 类型n, ok := i.(int)if ok {fmt.Println("Integer value:", n)} else {fmt.Println("Type assertion failed")}
}

运行结果如下:

String value: hello
Type assertion failed

第一个类型断言成功,因为 i 实际上是一个字符串。第二个类型断言失败,因为 i 不是一个整数。


http://www.ppmy.cn/news/1527474.html

相关文章

nodejs+express+vue教辅课程辅助教学系统 43x2u前后端分离项目

目录 技术栈具体实现截图系统设计思路技术可行性nodejs类核心代码部分展示可行性论证研究方法解决的思路Express框架介绍源码获取/联系我 技术栈 该系统将采用B/S结构模式,开发软件有很多种可以用,本次开发用到的软件是vscode,用到的数据库是…

【车载开发系列】ParaSoft单元测试环境配置(三)

【车载开发系列】ParaSoft单元测试环境配置(三) 【车载开发系列】ParaSoft单元测试环境配置(三) 【车载开发系列】ParaSoft单元测试环境配置(三)一. 去插桩设置Step1:静态解析代码Step2:编辑Parasoft文件Step3:确认去插桩二. 新增测试用例Step1:生成测试用例Step2:执…

【git系列】git中的那些迷惑的术语以及概念详解

引子 连着写了几篇关于git的文章,满满对git有了更深入的了解。但是git里面还是有很多术语让人困惑。下面我逐一解释下。 当我们把它们搞清楚后就发现,没那么难懂,心里作用占了很大一部分。 事实是: 1)“索引”、“…

WSL中使用AMBER GPU串行版

前提是已经安装过wsl 1 在 WSL 2 中启用 NVIDIA CUDA 参考在 WSL 2 上启用 NVIDIA CUDA | Microsoft Learn 注意:勿在 WSL 中安装任何 Linux 显示驱动程序。Windows 显示驱动程序将同时安装本机 Windows 和 WSL 支持的常规驱动程序组件。 2 在WSL2中配置Cuda 不安…

Ubuntu 中无法直接使用 `conda` 命令,设置conda的环境变量

您好,您在 Ubuntu 中无法直接使用 conda 命令,是因为 conda 的可执行文件没有添加到您的环境变量 PATH 中。您可以通过以下方法解决: 方法一:使用 conda init 初始化 运行初始化命令: /home/sunyuhua/miniconda3/bin/…

银行监管报送系统系列介绍(十九):利率报送

2024年8月1日,中国人民银行货币政策司下发了《中国人民银行货币政策司关于组织开展利率报备监测分析系统NR表报送功能上线及数据报送的通知》(银货政〔2024〕5号)(以下简称“5号文”)。本次发文主要是为了进一步提升利率报备数据核对工作的质效,在利率报备监测分析系统中…

微信小程序中实现类似于 ECharts 的图表渲染及优化

文章目录 前言一、微信小程序中使用 ECharts 概述二、ECharts 在小程序中的集成步骤2.1 在小程序项目的根目录下,运行以下命令安装 echarts 依赖:2.2 在小程序的 components 文件夹中创建 ec-canvas 组件。2.3 在需要展示图表的页面中,引用 e…

借老系统重构我准备写个OpenAPI3.1版的API管理工具(附录屏演示)

前段时间一直在忙公司老系统重构的方案设计,其中最大的重构点就是前后端分离。为了加快前后端协同开发和对接的工作效率,我决定写一个公司内部使用的OpenAPI3.1版的API管理工具。 文章目录 有现成的工具为啥不用现有成熟方案初步成果展示录屏演示下一步计…

代理IP设置后IP不变?可能的原因及解决方法

在使用代理IP时,有时会遇到代理设置后IP地址却没有变化的情况。这种问题可能会让人感到困惑,但其实背后有多种原因。本文将详细探讨这些原因,并提供相应的解决方法,帮助你顺利解决问题。 可能的原因 代理IP设置后IP地址不变的原…

Netty 相关问题

传统网络编程存在的问题 传统网络编程存在以下问题: 线程创建开销:在Java中,创建线程需要调用操作系统API,这会消耗资源和时间。内存占用高:线程本身占用内存,创建过多线程会导致内存资源紧张。CPU使用率…

Uniapp + Vue3 + Vite +Uview + Pinia 分商家实现购物车功能(最新附源码保姆级)

Uniapp Vue3 Vite Uview Pinia 分商家实现购物车功能(最新附源码保姆级) 1、效果展示2、安装 Pinia 和 Uview3、配置 Pinia4、页面展示 1、效果展示 注意:这个演示图没有背景色,背景色建议在 App.vue 中新增代码实现全局背景色…

Qt_多元素控件

目录 1、认识多元素控件 2、QListWidget 2.1 使用QListWidget 3、QTableWidget 3.1 使用QListWidget 4、QTreeWidget 4.1 使用QTreeWidget 5、QGroupBox 5.1 使用QGroupBox 6、QTabWidget 6.1 使用QTabWidget 结语 前言: 在Qt中,控件之间…

4.qml单例模式

这里写目录标题 js文件单例模式qml文件单例模式 js文件单例模式 直接添加一个js文件到qml中 修改内容 TestA.qml import QtQuick 2.0 import QtQuick.Controls 2.12 import "./MyWork.js" as MWItem {Row{TextField {onEditingFinished: {MW.setA(text)}}Button…

第十八节:学习统一异常处理(自学Spring boot 3.x的第五天)

这节记录下如何通过AOP方式统一处理异常拦截。 第一步: 新建一个exception包,创建一个ExcetionHandler.java(名字随意取) package cn.wcyf.wcai.exception;import cn.wcyf.wcai.common.Result; import org.springframework.web…

mysql实用系列:日期格式化

在MySQL中,你可以使用DATE_FORMAT()函数来格式化日期。DATE_FORMAT() 函数通常用于格式化 DATETIME 或 TIMESTAMP类型的字段。这个函数允许你按照指定的格式来显示日期和时间。下面是一些常见的日期格式化的例子: 显示年-月-日: SELECT DATE_…

经典sql题(六)查找用户每月累积访问次数

使用聚合开窗查找用户每月累积访问次数,首先介绍一下使用 GROUP BY和开窗的区别 GROUP BY 行数变化:使用 GROUP BY 后,原始数据会按指定列进行分组,结果中每组只保留一行,因此行数通常减少。作用:适用于需…

java-在ANTLR中BaseListner的方法和词法规则的关系0.5.0

java-在ANTLR中BaseListner的方法和词法规则的关系0.5.0 环境介绍词法规则与类方法的对应关系ClassOrInterfaceModifierContext与词法对应关系参考 环境介绍 java.g4ideawindows10 词法规则与类方法的对应关系 随便找一个词法规则,如ClassOrInterfaceModifier&am…

linux--防火墙

linux防火墙 ubuntu 1, 关于ufw 查看防火墙: sudo ufw status 关闭防火墙: sudo ufw disable 开启: sudo ufw enable 2,firewalld 执行: systemctl status firewalld 出现: Unit fi…

RTC、ADC

RTC RTC(Real-Time Clock)是实时时钟模块,用于跟踪实际时间(年、月、日、时、分、秒),即使在系统断电或处于低功耗模式下也能保持时间的准确性。 特点 时间和日期跟踪低功耗模式支持可编程闹钟和定时器备…

在 Windows 系统上,文件传输到虚拟机(VM)可以通过 VS Code 的图形界面(GUI)或命令行工具进行操作

在 Windows 系统上,文件传输到虚拟机(VM)可以通过 VS Code 的图形界面(GUI)或命令行工具进行操作。以下是几种方法: ### 方法 1: 使用 VS Code 图形界面 1. **连接到远程 VM**: - 在 VS Cod…