ijiel-2qaaa-aaaad-qepoa-cai.icp0.io Open in urlscan Pro
2a00:fb01:400:200:5000:5aff:fef2:9428  Public Scan

URL: https://ijiel-2qaaa-aaaad-qepoa-cai.icp0.io/chapter-9/concurrency-patterns/go-concurrency-pattern-brdige-channel/index.html
Submission: On December 20 via api from US — Scanned from CH

Form analysis 0 forms found in the DOM

Text Content

زبان گو فارسی


 * اسپانسرهای کتاب
 * پیشگفتار
 * تاریخچه
 * آموزش نصب
 * ابزارها, دستورات گو و معرفی IDE
 * نقشه یادگیری زبان گو
 * تغییرات نسخه های زبان گو
 * سوالات مصاحبه
 * فصل اول: آشنایی با مفاهیم گو
   * 1.1 ساختار کد گو
   * 1.2 کلید واژه و شناسه‌ها
   * 1.3 تایپ‌های پایه
   * 1.4 عملگرها
   * 1.5 متغیرها و constant
   * 1.6 مقادیر صفر تایپ‌ها (zero values)
   * 1.7 تابع (function)
   * 1.8 آرایه و slice
   * 1.9 حلقه‌ها (for)
   * 1.10 نقشه map
   * 1.11 شرط (if, switch)
   * 1.12 اضافه کردن پکیج در کد (package)
   * 1.13 defer, panic, recovery
   * 1.14 لیست تایپ‌ها و توابع Builtin
   * 1.15 قالب بندی رشته‌ها
 * فصل دوم: مکانیزم های زبان
   * 2.1 اشاره گر (Pointer)
   * 2.2 ساختار (struct)
   * 2.3 متد (Method)
   * 2.4 اینترفیس (Interface)
   * 2.5 جاسازی تایپ (type embedding)
   * 2.6 مدیریت خطاها
   * 2.7 فرق casting با conversion
 * فصل سوم: همزمانی (concurrency)
   * 3.1 آشنایی با همزمانی
   * 3.2 گوروتین (goroutine)
   * 3.3 پکیج sync
   * 3.4 پکیج atomic
   * 3.5 آموزش مقابله با data race
   * 3.6 کانال (channel)
   * 3.7 آموزش استفاده از select
   * 3.8 پکیج context
   * 3.9 تکنیک های همزمانی
   * 3.10 الگو های همزمانی
 * فصل چهارم: مباحث پیشرفته
   * 4.1 آموزش Build پروژه
   * 4.2 آموزش کار با Debugging
   * 4.3 آموزش کار با go mod
   * 4.4 آموزش کار با workspace
   * 4.5 آموزش کار با Vendor
   * 4.6 آموزش نوشتن برنامه command line
   * 4.7 آموزش کار با فایل
   * 4.8 آموزش کار با json
   * 4.9 آموزش کار با toml
   * 4.10 آموزش کار با yaml
   * 4.11 آموزش کار با csv
   * 4.12 آموزش کار با ini
   * 4.13 آموزش کار با environment variable
   * 4.14 آموزش کار با regexp
   * 4.15 آموزش reflection
   * 4.16 آموزش generator
   * 4.17 آموزش stringer
   * 4.18 تکنیک های کدنویسی زبان گو
   * 4.19 اصول کامنت نویسی
   * 4.20 قوانین کدنویسی در گو
   * 4.21 زباله جمع کن (garbage collector)
   * 4.22 کتابخانه Plugin
   * 4.23 شی گرایی در زبان گو
     * 4.23.1 کپسوله سازی (Encapsulation)
     * 4.22.2 ارث بری
     * 4.23.3 پلی مورفیسم (Polymorphism)
     * 4.23.4 overriding
     * 4.23.5 abstraction
   * 4.24 Tracing
 * فصل پنجم: برنامه نویسی شبکه با گو
   * 5.1 شبکه چیست
   * 5.2 سرور tcp مقدماتی
   * 5.3 سرور tcp پیشرفته
   * 5.4 سرور udp مقدماتی
   * 5.5 سرور udp پیشرفته
   * 5.6 کتابخانه http سمت سرور مقدماتی
   * 5.7 کتابخانه http سمت سرور پیشرفته
   * 5.8 کتابخانه http سمت کلاینت مقدماتی
   * 5.9 کتابخانه http سمت کلاینت پیشرفته
   * 5.10 پروتکل quic
 * فصل ششم: جنریک (Generics)
   * 6.1 جنریک مقدماتی
 * فصل هفتم: تست نویسی
   * 7.1 پکیج testify
 * فصل هشتم: پکیج های استاندارد
 * فصل نهم: الگوهای طراحی
   * 9.1 الگوهای طراحی سازنده
     * 9.1.1 الگو Singleton
     * 9.1.2 الگو Factory Method
     * 9.1.3 الگو Prototype
     * 9.1.4 الگو Abstract Factory
     * 9.1.6 الگو Builder
     * 9.1.7 الگو Object Pool
   * 9.2 الگوهای طراحی ساختاری
     * 9.2.1 الگو Adaptor
     * 9.2.2 الگو Bridge
     * 9.2.3 الگو Composite
     * 9.2.1 الگو Decorator
     * 9.2.5 الگو Facade
     * 9.2.6 الگو Flyweight
     * 9.2.7 الگو Proxy
   * 9.3 الگوهای طراحی رفتاری
     * 9.3.1 الگو Chain Of Responsibility
     * 9.3.2 الگو Command
     * 9.3.3 الگو Iterator
     * 9.3.4 الگو Mediator
     * 9.3.5 الگو Memento
     * 9.3.6 الگو Observer
     * 9.3.7 الگو State
     * 9.3.8 الگو Strategy
     * 9.3.9 الگو Template Method
     * 9.3.10 الگو Visitor
   * 9.4 الگوهای همزمانی
     * 9.4.1 الگو Wait For Result
     * 9.4.2 الگو Fan Out/In
     * 9.4.3 الگو Wait For Task
     * 9.4.4 الگو Pooling
     * 9.4.5 الگو Drop
     * 9.4.6 الگو Cancellation
     * 9.4.7 الگو Semaphore
     * 9.4.8 الگو Bounded Work Pooling
     * 9.4.9 الگو Retry Timeout
     * 9.4.10 الگو Channel Cancellation
     * 9.4.11 الگو Producer-Consumer
     * 9.4.12 الگو Monitor
     * 9.4.13 الگو Future
     * 9.4.14 الگو Pipeline
     * 9.4.15 الگو Subscription
     * 9.4.16 الگو Bridge Channel
     * 9.4.17 الگو Queuing
   * 9.5 الگوهای Cloud Native
     * 9.5.1 الگو Circuit Breaker
     * 9.5.2 الگو Debounce
     * 9.5.3 الگو Retry
     * 9.5.4 الگو Throttle
     * 9.5.5 الگو Timeout
   * 9.6 ضد الگوها (Anti-Patterns)
     * 9.6.1 ضد الگو سینتکسی
 * فصل دهم: الگوریتم و ساختار داده
   * 10.1 Data Structures (Queue Stack Lists)
 * فصل یازدهم: معماری های نرم افزار

مخزن کتاب مشارکت در کتاب زبان گو



9.4.16 الگو Bridge Channel


گروه تلگرامی مهندسین گولنگ
لینکدین نویسنده
توییتر نویسنده


 * * 9.4.16.1 توضیحات
   * 9.4.16.2 دیاگرام
   * 9.4.17.3 نمونه کد
   * 9.4.18.4 کاربردها


9.4.16 الگو BRIDGE CHANNEL


9.4.16.1 توضیحات #

با استفاده از الگو Bridge Channel می توانید بین ۲ کانال داده ای را منتقل کنید
فرض کنید یک داده را به کانال input میفرستید و از دریافت داده آن را می توانید به
کانال دیگری منتقل کنید و عملا شما یک پل برای انتقال داده ایجاد کردید.


9.4.16.2 دیاگرام #


9.4.17.3 نمونه کد #

 1package main
 2
 3import "fmt"
 4
 5func main() {
 6	// Declare input and output channels
 7	input := make(chan int)
 8	output := make(chan int)
 9
10	// Launch goroutine to act as bridge between channels
11	go func() {
12		for {
13			// Wait for value on input channel
14			value := <-input
15
16			// Forward value to output channel
17			output <- value
18		}
19	}()
20
21	// Send a value to the input channel
22	input <- 1
23
24	// Receive the value from the output channel
25	fmt.Println(<-output) // prints "1"
26}


1$ go run main.go
21


در کد فوق ما ۲ کانال input و output ایجاد کردیم سپس داخل یک گوروتین داده را از
کانال input دریافت کردیم و داخل متغیر value قرار دادیم سپس value را به کانال
output فرستادیم و در نهایت داده دریافت شده از کانال output را چاپ کردیم.


9.4.18.4 کاربردها #

 * فیلتر داده ها: یک گوروتین می تواند به عنوان پلی بین یک کانال ورودی و یک کانال
   خروجی عمل کند، داده ناخواسته را فیلتر کرده و فقط آنهایی را که معیارهای خاصی
   را برآورده می کنند، ارسال می کند.
 * تبدیل مقادیر: یک گوروتین می تواند به عنوان پلی بین یک کانال ورودی و یک کانال
   خروجی عمل کند و مقادیر دریافت شده در کانال ورودی را قبل از ارسال به کانال
   خروجی تبدیل کند.
 * Fan-out: یک گوروتین می تواند به عنوان پلی بین یک کانال ورودی و چندین کانال
   خروجی عمل کند و مقدار یکسان را به طور همزمان به چندین کانال ارسال کند.
 * Fan-in: یک گوروتین می تواند به عنوان پلی بین چندین کانال ورودی و یک کانال
   خروجی واحد عمل کند و مقادیر را از چندین کانال به یک کانال به روشی کنترل شده
   ارسال کند.
 * ترکیب چند کانال: یک گوروتین می تواند به عنوان پلی بین چندین کانال ورودی و یک
   کانال خروجی واحد عمل کند و مقادیر از چندین کانال را در یک کانال واحد ترکیب
   کند تا توسط یک گوروتین consume شود.

این صفحه را ویرایش کنید
9.4.17 الگو Queuing ◀︎




گروه تلگرامی مهندسین گولنگ
لینکدین نویسنده
توییتر نویسنده


 * * 9.4.16.1 توضیحات
   * 9.4.16.2 دیاگرام
   * 9.4.17.3 نمونه کد
   * 9.4.18.4 کاربردها