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)
}
இங்கே, பைபர் செய்யப்பட்ட சேனல் ஒரு மதிப்பை தடையைத் தவிர்த்து அனுப்ப அனுமதிக்கிறது, ஏனெனில் பைபரில் இடம் உள்ளது. ஆகையால், பைபர் செய்யப்பட்ட சேனல்களும் தொடர்ச்சியான அனுப்பும்/பெறும் முறைகளும் கோருடின்கள் இல்லாமல் இயங்கும்.