【Go - 类型断言】

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

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

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

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

示例

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

go 复制代码
package main

import (
	"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 不是一个整数。

相关推荐
严谨的麻辣烫1 分钟前
2026 年静态 IP 为什么重新受到关注?从住宅代理安全问题看固定网络出口
运维·服务器·tcp/ip·网络安全
用户8356290780517 分钟前
使用 Python 在 Word 文档中创建自定义图表
后端·python
xxwxx__13 分钟前
C++ list 深度解析:从使用原理到模拟实现
开发语言·c++·list
Chester_199923 分钟前
CSP202303C.LDAP
开发语言·c++·蓝桥杯·stl
treacle田29 分钟前
达梦数据库-Linux DM数据守护主备集群缩改为单机-记录总结
linux·服务器·数据库·主备集群改单机
Profile排查笔记29 分钟前
JavaScript 实现浏览器指纹生成:基础字段、Canvas 采样与 SHA-256 摘要
前端·人工智能·后端·自动化
奋斗吧程序媛32 分钟前
CSV文件导入功能
开发语言·javascript·ecmascript
GoGeekBaird37 分钟前
我给 DeepSeek Harness 造了个铸造台
后端
YOU OU37 分钟前
Spring Cloud概述
后端·spring·spring cloud
evans在进步44 分钟前
Java 常用设计模式(二):装饰器、适配器、责任链、模板方法、策略与观察者
java·开发语言·设计模式