类型断言
· 阅读需 2 分钟
类型断言用于检查接口值的动态类型是否符合某个特定类型。
value, ok := interfaceVar.(ConcreteType)
interfaceVar
是一个接口变量ConcreteType
是你想要断言的具体类型value
是断言成功后转换的值ok
是一个布尔值,表示断言是否成功
案例1 双返回值
var writer io.Writer = os.Stdout
if closer, ok := writer.(io.Closer); ok {
closer.Close() // 安全调用接口扩展方法
}
案例2 单返回值
// 直接转换(失败时触发panic)
str := anyVar.(string)
案例3 类型匹配
var v interface{} = 42
// 基础类型匹配
_, ok1 := v.(int) // ok1 = true
_, ok2 := v.(string) // ok2 = false
// 接口类型匹配
_, ok3 := v.(fmt.Stringer) // 检查是否实现特定接口