網頁

2021/9/23

Golang Channel 發送敘述 Send statements

Go語言的Send statements是指把值送入channel的敘述。


例如下面將字串"hello"以<-操作符送入channel string型別的變數c

c := make(chan string) // create channel string type c
c <- "hello" // send statements, send string "hello" to channel c

Channel可以接收值之前send會阻塞。

例如下面發送值到channel的動作會阻塞,因為channel <-c接收值前被time.Sleep()等待三秒。

package main

import (
    "fmt"
    "time"
)

func main() {
    fmt.Println("start")
    c := make(chan string) // create channel c

    go func() { // create goroutine to send value to c
        c <- "hello" // send "hello" to c
        fmt.Println("send")
    }()

    time.Sleep(3 * time.Second) // wait 3 seconds
    fmt.Println(<-c)            // receive "hello" from c

    fmt.Println("end")
}

印出結果為:

start
hello
send
end


沒有留言:

張貼留言