[Golang] Các lệnh cơ bản trong Go

Select

  • Select bắt luồng công việc hiện tại đợi một trong cách trường hợp xảy ra. Khi một trường hợp xảy ra thì khối lệnh trong case tương ứng sẽ thực hiện. Nếu nhiều điều kiện của nhiều case cùng thỏa mãn một lúc thì một tình huống sẽ được chọn ngẫu nhiên để thực hiện và luồng công việc bị đợi sẽ tiếp tục bình thường các khối sau select. Trong select có thể có hoặc không case default. default sẽ được thực hiện nếu chưa có case nào thỏa điều kiện.
  • Cách sử dụng:
select {
case <điều kiện>:
    khối lệnh
case <điều kiện>:
    khối lệnh
default:
    khối lệnh
}

Một ví dụ từ https://tour.golang.org/concurrency/5

package main

import "fmt"

func fibonacci(c, quit chan int) {
    x, y := 0, 1
    for {
        select {
        case c <- x:
            x, y = y, x+y
        case <-quit:
            fmt.Println("quit")
            return
        }
    }
}

func main() {
    c := make(chan int)
    quit := make(chan int)
    go func() {
        for i := 0; i < 10; i++ {
            fmt.Println(<-c)
        }
        quit <- 0
    }()
    fibonacci(c, quit)
}

Leave a Reply

Your email address will not be published. Required fields are marked *