Golang Channel Và Cách Sử Dụng.

Channel trong Golang được hiểu đơn giản là một ống dẫn mà có thể truyền hoặc nhận giá trị, cú pháp thông qua. <- Cú Pháp Để tạo ra một channel: chan := make(chan int) chan là channel có kiểu là int, sau này chúng ta có thể khai báo nhiều loại type cho channel

Channel trong Golang được hiểu đơn giản là một ống dẫn mà có thể truyền hoặc nhận giá trị, cú pháp thông qua.

<-


Cú Pháp

  • Để tạo ra một channel:
chan := make(chan int)

chan là channel có kiểu là int, sau này chúng ta có thể khai báo nhiều loại type cho channel tuỳ vào mục đích sử dụng, ví dụ như string, struct,…

  • Gửi giá trị đến channel chan:
ch <- sendvalue

giá trị sendvalue có kiểu là type int được gửi để chan

  • Nhận giá trị từ channel chan:
receivevalue := <-chan

sau khi nhận giá trị kiểu int từ sendvalue

** Ví Dụ.**

  1. Ví dụ 1 là dùng channel để nhận value từ một function đơn giản.
package main

import "fmt"

func exChannel(ch chan int) {
	sendvalue := 5
	ch <- sendvalue
}

func main() {
	ch := make(chan int)
	go exChannel(ch)
	receice := <-ch
	fmt.Println(receice)
}

kết quả là:

5

RUN

  1. Ví dụ 2 này sẽ nhận nhiều giá trị từ 1 function khác.
package main

import (
	"fmt"
	"time"
)

func main() {
	stop := make(chan bool)
	ch := make(chan int)
	go exChannelArray(ch, stop)
	for {
		select {
		case receice := <-ch:
			fmt.Println(receice)
		case <-stop:
			return
		}
	}
}

func exChannelArray(ch chan int, stop chan bool) {
	for i := 0; i < 9; i++ {
		ch <- i
	}
	time.Sleep(time.Second)
	stop <- true
}

Kết quả:

receice: 0
receice: 1
receice: 2
receice: 3
receice: 4
receice: 5
receice: 6
receice: 7
receice: 8

Run

Trong ví dụ trên có phần for select nếu không hiểu thì comment mình sẽ giải thích nhé.

for {
		select {
		case receice := <-ch:
			fmt.Println(receice)
		case <-stop:
			return
		}
	}

Cảm ơn các bạn đã đọc, các bạn có thể yêu cầu thêm về các chủ đề khác trong golang nhé.

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ