Sobes.tech

Golang

Tapşırıq: «Timeout ilə ping-pong» pingPong adlı funksiyanı yazın: - İki goroutine başlatın: biri "ping" mesajları yaradır, digəri — "pong". - Goroutine'lər mesajları yalnızca ardıcıl olaraq ümumi kanaldan mübadilə etməlidir. - Mübadilə 3 saniyə davam edir, sonra proqram düzgün şəkildə bağlanmalıdır (güclü bağlanma). - Timeout ilə ləğv etmək üçün kontekstdən istifadə edin. - Hər bir mesajı ekranda, başlanğıcdan bəri millisekundlarda vaxt ilə birlikdə göstərin. Gözlənilən çıxış nümunəsi: 0ms: ping

216

Sadə canlı kodlaşdırma tapşırığı (əsasən rəqabət) Şərt: Hər URL üçün eyni zamanda HTTP GET sorğusu edən və URL-ni açar, cavabın bədənini (sətir) dəyər kimi tutan xəritəni qaytaran fetchAll(urls []string) map[string]string funksiyasını yazın. Əgər sorğu uğursuz olarsa (səhv, 200 deyil), dəyər boş sətir olacaq. Məhdudiyyətlər: - Xarici kitabxanalardan istifadə etmək olmaz (yalnız standartlar). - İmza dəyişdirilə bilməz. - Proqram http.Get-də panik olarsa, çökməməlidir. Giriş nümunəsi: ["[link]" "[link]" "[link]"]

201

package main import ( "fmt" ) func a(p *string) { s2 := "string2" *p = s2 } func main() { str1 := "string1" p := &str1 fmt.Println(*p) a(&p) fmt.Println(*p) }

185

İşə götürənə nə demək olar (əgər soruşsalar) "Müəyyən sayda işçi ilə işçi hovuzu istifadə edərdim, tapşırıqlar üçün kanal və sync.WaitGroup. İşçilər sorğuları yerinə yetirəcək və vaxt aşımı və ləğv etmə kontekst vasitəsilə idarə olunacaq. Nəticələri mutex ilə qorunan tamponda toplayacağam (və ya ayrıca kanal vasitəsilə)." İndi sənin növbəndir Bu söhbətdə kodu yaz. Mən yoxlayıb geribildirim verəcəyəm. Haradan başlamağı bilmirsinizsə, ipucu istəyin. Uğurlar!

177

// slice-ın bütün elementləri unikal olmalıdır + ümumi 1000 element olmalıdır // proqram time.sleep səbəbindən artıq vaxt sərf etməməlidir func main() { checkIncrement := map[int]int32{} var data []int for i := 0; i < 1000; i++ { go func() { data = append(data, i) if _, found := checkIncrement[i]; found { fmt.Println(i) panic("təkrarlanan artım") } checkIncrement[i] = 1 }() } time.Sleep(2 * time.Second) fmt.Println(len(data)) }

159

Pointer nədir və funksiyanın arqumenti pointerdirsə, nə baş verər?

159

Mutex olmadan slice elementləri ilə doldurun ki, içində bütün 1000 element olsun.

148