惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
博客园 - 三生石上(FineUI控件)
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
Microsoft Azure Blog
Microsoft Azure Blog
GbyAI
GbyAI
腾讯CDC
酷 壳 – CoolShell
酷 壳 – CoolShell
M
MIT News - Artificial intelligence
Stack Overflow Blog
Stack Overflow Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Jina AI
Jina AI
爱范儿
爱范儿
博客园 - 【当耐特】
雷峰网
雷峰网
S
SegmentFault 最新的问题
美团技术团队
Blog — PlanetScale
Blog — PlanetScale
The GitHub Blog
The GitHub Blog
有赞技术团队
有赞技术团队
G
Google Developers Blog
大猫的无限游戏
大猫的无限游戏
Google DeepMind News
Google DeepMind News
J
Java Code Geeks

博客园 - 悉野

go编译期接口断言 / 编译期接口检查(compile-time interface assertion / compile-time interface check) ssh连结vmware中ubuntu的共享文件夹 spring加载冲突问题 spring一个错误修正 抓安卓日记到文件 注册表删除桌面顽固图标 github买的账号无法拉取代码的解决方法 apk常用命令 java服务器异常处理 ES6 学习难度分层 promise原理 材质, 纹理, shader之间的关系 TCP与UDP区别 javascript中=>与function的区别 javascript中函数解析过程 cocos使用fgui 几种服务注册与发现的区别 mybatis测试 向量点乘与叉乘 unity画布3种渲染模式 go学习笔记10(HTTP) go学习笔记9(TCP) go学习笔记8(反射) c++简单的线程池 operator new 是 C++ 动态内存分配的核心函数,负责分配原始内存,不调用构造函数 C++的定位放置new(Placement new) go学习笔记7(泛型,文件读写,测试) go学习笔记6(协程与channel,select使用,线程安全,异常处理) go学习笔记5(函数,结构体,自定义类型和类别名,接口) go学习笔记4(数组与切片,map,if,switch,for循环)
Go 的类型断言
悉野 · 2026-08-11 · via 博客园 - 悉野

Go 的类型断言(Type Assertion)用于在接口类型(interface)上获取其底层的具体类型或值

格式:

v := x.(T)

x:接口类型变量(interface{} 或具体接口)
T:断言的目标类型
v:如果成功,就是 x 的动态值,类型为 T

不安全的类型断言:

var i interface{} = 123
s := i.(string) // panic: interface conversion

安全的类型断言:

v, ok := x.(T)

ok == true:断言成功
ok == false:断言失败,不会 panic,v 为零值

var i interface{} = 123

s, ok := i.(string)
if !ok {
fmt.Println("not a string")
}

 常见用法:

从 interface{} 中取值
判断接口是否实现额外方法
反射前的类型判断
HTTP / JSON / 中间件中处理任意值

type Client struct {
User interface{} //用户对象
}

func GetUser(c *server.Client) *model.User {
if c.User == nil {
return nil
}
return c.User.(*model.User)
}

c.User.(*model.User)其实返回两个值