當前位置: 首頁>>編程語言>>正文


Go語言教程:通道

返回Go語言教程首頁

概念簡介

通道(Channels)是連接多個 Go語言 協程的管道。你可以從一個 Go 協程將值發送到通道,然後在別的 Go 協程中接收。

例程代碼


package main

import "fmt"

func main() {

    // 使用 `make(chan val-type)` 創建一個新的通道。
    // 通道類型就是他們需要傳遞值的類型。
    messages := make(chan string)

    // 使用 `channel <-` 語法 _發送(send)_ 一個新的值到通道中。這裏
    // 我們在一個新的 Go 協程中發送 `"ping"` 到上麵創建的
    // `messages` 通道中。
    go func() { messages <- "ping" }()

    // 使用 `<-channel` 語法從通道中 _接收(receives)_ 一個值。這裏
    // 將接收我們在上麵發送的 `"ping"` 消息並打印出來。
    msg := <-messages
    fmt.Println(msg)
}

執行&輸出


# 我們運行程序時,通過通道,消息 `"ping"` 成功地從一個 Go 協程傳到
# 另一個中。
$ go run channels.go
ping



默認發送和接收操作是阻塞的,直到發送方和接收方都準備完畢。
這個特性允許我們,不使用任何其它的同步操作,來在程序結尾等待
消息 `"ping"`。

課程導航

學習上一篇:Go語言教程:協程    學習下一篇:Go語言教程:通道緩衝

相關資料

本例程github源代碼:https://github.com/xg-wang/gobyexample/tree/master/examples/channels

Go語言通道

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/4041.html,未經允許,請勿轉載。