Skip to content

channel

package main
import (
"fmt"
)
func main() {
// 创建一个无缓存的channel
messages := make(chan string)
go func() {
// 发送消息到 channel
messages <- "ping"
}()
// 从channel中接收消息
msg := <-messages
fmt.Println(msg) // ping
}
package main
import (
"fmt"
"time"
)
func main() {
channelWithCache()
channelWithoutCache()
}
func channelWithCache() {
// 创建一个带缓冲的channel
ch := make(chan string, 1)
go func() {
ch <- "Hello, first message from channel"
time.Sleep(time.Second)
ch <- "Hello, second message from channel"
}()
time.Sleep(2 * time.Second)
message := <-ch
fmt.Println(time.Now().String() + message) // first message from channel
message = <-ch
fmt.Println(time.Now().String() + message) // second message from channel
}
func channelWithoutCache() {
// 不带缓冲的channel
ch := make(chan string)
go func() {
time.Sleep(time.Second)
ch <- "Hello, message from channel"
}()
message := <-ch
fmt.Println(message) // Hello, message from channel
}