【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 不是一个整数。

相关推荐
aiopencode7 分钟前
iOS手动代码混淆函数和变量名基本原理和注意事项教程
后端
程序员威哥10 分钟前
YOLOv8用ConvMixer结构:简化Backbone,速度+20%,mAP仅降0.9%
后端
开心猴爷14 分钟前
如何在苹果手机上面进行抓包?iOS代理抓包,数据流抓包
后端
pen-ai15 分钟前
打通 Python 与 C++ 的参数传递机制
开发语言·c++·python
程序员威哥17 分钟前
轻量型YOLO入门:在嵌入式设备上跑通目标检测(树莓派实战)
后端
亲爱的非洲野猪19 分钟前
深入解析享元模式:用Java实现高性能对象复用
java·开发语言·享元模式
阿甘正赚.22 分钟前
Linux初学
linux·运维·服务器
程序员威哥23 分钟前
基于YOLOv7的目标检测实战:彻底解决新手常见的「训练不收敛」问题
后端
qq_4017004126 分钟前
Qt的.pro文件
开发语言·qt
程序员威哥27 分钟前
从数据集标注到模型评估:YOLO完整工作流实战(附避坑清单)
后端