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

相关推荐
龙侠九重天8 分钟前
C# 构建 AI Agent 系统 — 我的实践笔记
开发语言·人工智能·语言模型·自然语言处理·大模型·agent·智能体
SilentSamsara8 分钟前
Pandas 工程化:多层索引、分组聚合与窗口函数的进阶用法
开发语言·python·青少年编程·pandas
何以解忧,唯有..10 分钟前
Python 字符串完全指南:从基础到高级操作
开发语言·python
kiss strong12 分钟前
自制请求工具
开发语言·python·lua
lwprain12 分钟前
Umi-ocr2.1.5的linux部署,仅做记录
linux·服务器·umi-ocr
scan72413 分钟前
短期记忆记忆存储在内存里,一个会话里的多轮对话
开发语言·c#
cjp56020 分钟前
002.WEB API 服务器 RESTful规范
服务器
卧室小白33 分钟前
K8S-Pod基本配置
linux·运维·服务器
yyuuuzz33 分钟前
谷歌云基础服务的入门认知
linux·运维·服务器·数据库·人工智能·github
wuhuhuan34 分钟前
playwright java maven项目创建
后端