⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

Go 接口进阶

类型断言、类型 switch、空接口 any · 难度:高级 · +20XP

接口进阶操作

类型断言

从接口值中提取具体类型

var i interface{} = "hello"
s, ok := i.(string)  // ok=true, s="hello"
n, ok := i.(int)     // ok=false, n=0(断言失败不 panic)

类型 Switch

func describe(i interface{}) {
    switch v := i.(type) {
    case string: fmt.Printf("string: %s (len=%d)
", v, len(v))
    case int:    fmt.Printf("int: %d
", v)
    case []int:  fmt.Printf("[]int: len=%d
", len(v))
    default:     fmt.Printf("unknown type: %T
", v)
    }
}

空接口 interface{} / any

Go 1.18+ 引入了 any 作为 interface{} 的别名。可以接收任意类型,类似于其他语言的 Object。

var x any = 42
x = "hello"
x = []int{1, 2, 3}
// 使用前必须类型断言
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 142 篇
0 完成
🔥 0