Sobes.tech
Junior — Middle

შეგიძლიათ მიაწოდოთ მეთოდების მაგალითები, როგორ მუშაობენ არხებთან გორუტინების გამოყენების გარეშე?

sobes.tech AI

პასუხი AI-სგან

Go-இல் சேனல்கள் பொதுவாக கோருடின்கள் இடையேயான தொடர்புக்கு பயன்படுத்தப்படுகின்றன, ஆனால் கூடுதல் கோருடின்கள் துவக்கப்படாமல் பயன்படுத்தப்படலாம், உதாரணமாக, சிங்கோனஸ் தரவு பரிமாற்றத்திற்கு.

உதாரணம்:

package main

import "fmt"

func main() {
    ch := make(chan int)

    // ஒரே ஓட்டத்தில் அனுப்பும் மற்றும் பெறும் (கோருடின்கள் இல்லாமல்)
    go func() {
        ch <- 42
    }()

    val := <-ch
    fmt.Println(val)
}

ஆனால், இந்த உதாரணத்தில் அனுப்புவதற்கு கோருடின் பயன்படுத்தப்படுகிறது, தடையைத் தவிர்க்க. கோருடின்கள் பயன்படுத்தப்படாதபட்சத்தில், அனுப்பும் மற்றும் பெறும் முறைகள் தொடர்ச்சியாக இருக்க வேண்டும், உதாரணமாக:

package main

import "fmt"

func main() {
    ch := make(chan int, 1) // பைபர் செய்யப்பட்ட சேனல்

    ch <- 10  // பைபர் செய்யப்பட்ட சேனலுக்கு அனுப்புதல்
    val := <-ch // சேனலிலிருந்து பெறுதல்

    fmt.Println(val)
}

இங்கே, பைபர் செய்யப்பட்ட சேனல் ஒரு மதிப்பை தடையைத் தவிர்த்து அனுப்ப அனுமதிக்கிறது, ஏனெனில் பைபரில் இடம் உள்ளது. ஆகையால், பைபர் செய்யப்பட்ட சேனல்களும் தொடர்ச்சியான அனுப்பும்/பெறும் முறைகளும் கோருடின்கள் இல்லாமல் இயங்கும்.