空接口与类型断言
1. 空接口(interface{})
空接口没有任何方法,所有类型都实现了空接口,因此空接口可以存储任意类型的值。
var x interface{}
x = 42
x = "hello"
x = struct{ Name string }{Name: "Go"}
`
2. 类型断言
从接口变量中提取具体类型的值,使用类型断言:
var x interface{} = "hello"
s, ok := x.(string)
if ok {
fmt.Println("字符串值:", s)
} else {
fmt.Println("不是字符串")
}
断言失败时,ok 为 false,防止运行时错误。
3. 类型开关
使用 switch 语句对接口类型进行多路判断:
switch v := x.(type) {
case int:
fmt.Println("整数", v)
case string:
fmt.Println("字符串", v)
default:
fmt.Println("其他类型")
}
空接口和类型断言支持动态类型处理,是 Go 语言灵活性的关键。
相关内容
- 什么是 Go Go 是由 Google 开发的一种开源编程语言,以简洁、高效、并发编程支持强著称,广泛应用于后端开发、云原生和微服务等领域。
- Go 的特点与适用场景 Go 语言以高并发、快速编译、简洁语法和强大标准库著称,适用于构建高性能网络服务、微服务架构和云原生应用。
- 安装 Go(Windows/Linux/macOS) 本节介绍如何在 Windows、Linux 和 macOS 上安装 Go 语言开发环境,包含安装步骤、验证方法及常见注意事项。
- 设置环境变量 本节介绍如何为 Go 语言配置环境变量,包括 GOPATH、GOROOT、PATH 等关键变量,适用于 Windows、Linux 和 macOS 系统。
- 第一个 Go 程序(Hello World) 本节将带你编写第一个 Go 程序“Hello, World”,帮助你快速了解 Go 的基础语法和程序结构。
- Go Modules 简介 本节介绍 Go Modules 的基本概念与用法,它是 Go 官方推荐的依赖管理方式,支持版本控制、依赖隔离和构建一致性。