⚡ 编程实验室🏗️ 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 Channel — goroutine 间通信

用 channel 在 goroutine 间安全传递数据 · 难度:高级 · +20XP

Channel — Go 并发的灵魂

Channel(通道)是 Go 最独特的特性——让多个 goroutine 之间安全地传递数据。你可以把它想象成一条管道:一端发送,另一端接收。

回顾:JS 用回调/Promise 处理异步。Go 直接让 goroutine 通过 channel 通信——更直观。

创建和使用 Channel

// 创建无缓冲 channel(同步)
ch := make(chan int)

// 发送 go func() { ch <- 42 }()

// 接收 value := <-ch // 阻塞等待直到有数据

// 带缓冲 ch := make(chan string, 10) // 可缓存10个

select — 多路复用

select {
case msg := <-ch1:
    fmt.Println("来自ch1:", msg)
case msg := <-ch2:
    fmt.Println("来自ch2:", msg)
case <-time.After(1 * time.Second):
    fmt.Println("超时!")
}
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 142 篇
0 完成
🔥 0