新闻详情

新闻详情

首页 / 资讯中心 / 详情

Go 空接口 type-switch 详解|any 和 interface {} 异同,非侵入式接口

发布时间:2026/9/27 21:55:56来源:尧图网络
Go 空接口 type-switch 详解|any 和 interface {} 异同,非侵入式接口
前言空接口interface{}可以接收任意类型type switch 专门用来判断空接口内部保存的动态类型很多同学容易把它和类型断言混淆。一、type switch 完整案例题目要求编写 Describe 函数接收 any 类型参数判断底层类型并按格式输出。package main import fmt // any等价于interface{}可以接收任意类型数据 func Describe(v any) { // type switch固定语法专门获取接口变量里面的动态类型 switch val : v.(type) { case int: fmt.Printf(This is an integer with value %d.\n, val) case string: fmt.Printf(This is a string: %s.\n, val) case float64: fmt.Printf(This is a float with value %g.\n, val) default: fmt.Println(Unknown type!) } } func main() { Describe(100) Describe(hello go) Describe(3.14) Describe(true) }输出结果This is an integer with value 100. This is a string: hello go. This is a float with value 3.14. Unknown type!重要知识点v.(type)只能写在 switch 里面不能单独拿出来使用这是 type switch 专属语法。和类型断言v.(int)区分开。简答题 1Go 接口实现为什么是非侵入式Go 语言没有implements关键字不需要显式声明某个类型实现了某个接口。只要一个类型拥有接口定义的全部方法编译器会自动判定该类型实现了这个接口。 不需要修改原有结构体的代码去添加实现声明类型和接口之间没有强耦合所以称为非侵入式接口。简答题 2interface{}和 any 的异同相同点any本质就是interface{}的别名源码定义type any interface{}底层完全一样。 不同点any 是 Go1.18 引入泛型之后新增的别名主要用于泛型约束interface{}是传统写法多用于普通函数接收任意类型参数搭配 type switch、类型断言。运行时两者没有任何差别只是开发编码习惯不同。常见踩坑type switch 里面 case 写的是类型不是变量。空接口变量存储的包含两部分动态类型 动态值。非侵入式只关心方法集合不关心类型有没有声明实现接口。小结type switch 用于判断空接口存储的动态类型普通类型断言用于单独判断某一种类型。Go 接口隐式实现非侵入式不存在 implements 关键字。any 就是 interface {} 别名泛型场景推荐写 any普通场景两种写法都可以。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

三角形取数(Hard Version)【牛客tracker  每日一题】 2026/9/27 22:47:00

三角形取数(Hard Version)【牛客tracker 每日一题】

三角形取数(Hard Version) 时间限制:1 秒 空间限制:256M 网页链接 牛客tracker 牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品&#xf…

阅读更多 →
Windsurf+MCP 配 TaoToken:settings.json 骨架与报错排查实录 2026/9/27 22:46:54

Windsurf+MCP 配 TaoToken:settings.json 骨架与报错排查实录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
wordpressphp.ini路径一文搞懂 2026/9/27 22:46:54

wordpressphp.ini路径一文搞懂

WordPress PHP.ini路径怎么找?3步定位+5种配置方案 域名服务器搞不懂?别慌,这是新手建站最头疼的坑。很多站长在部署 WordPress 时,明明代码没错,却报 Maximum execution time 或…

阅读更多 →
孤能子视角:EIS让传统退一步,以期建立人机可共享的规律判据 2026/9/27 22:46:54

孤能子视角:EIS让传统退一步,以期建立人机可共享的规律判据

(这里是智谱清言) 我的问题:我觉得EIS让传统退了一步,给人类和AI有一个"共识":什么是物理规律。况且,物理规律也不是绝对真理,EIS说是当前分辨率下高能效的共识。传统也是逼近客观实在而已。(以…

阅读更多 →
蜜罐技术从入门到实战:欺骗攻击者、收集情报、溯源反制的利器 2026/9/27 22:46:54

蜜罐技术从入门到实战:欺骗攻击者、收集情报、溯源反制的利器

📌写在前面 “蜜罐是什么?”“蓝队为什么要部署蜜罐?”“蜜罐能抓到攻击者吗?” 在护网和红蓝对抗中,蜜罐是蓝队最有效的防御手段之一。它像一个陷阱,等着攻击者自己跳进来。攻击者一碰蜜罐,蓝队…

阅读更多 →
从养 OpenClaw 到养社区 AI:用 TaoToken 统一 Key 搭建 Multi-Agent 调度骨架 2026/9/27 22:46:47

从养 OpenClaw 到养社区 AI:用 TaoToken 统一 Key 搭建 Multi-Agent 调度骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉