GoDasturchi
Arrays: The Fixed Sibling

Arrays: The Fixed Sibling

Massivlar: qat'iy o'lchamli qarindosh

example.go
pixel := [3]int{255, 128, 0} // R, G, B
fmt.Println(pixel[0]) // 255 (qizil)
fmt.Println(pixel[2]) // 0 (ko'k)

Pikselda har doim aynan 3 ta rang kanali bor. 4-chisini qo'sha olmaysiz yoki bittasini tashlab yubora olmaysiz. Aynan shu uni tabiiy massiv qiladi.

Massivlarning qat'iy o'lchami turining o'zida mustahkamlangan. [3]int aynan 3 ta element saqlaydi. O'lcham turning bir qismi, shuning uchun [3]int va [5]int — butunlay boshqa turlar. Birini ikkinchisiga belgilab bo'lmaydi.

Massivlar shuningdek qiymat turlari hisoblanadi. Birini boshqa o'zgaruvchiga belgilash barcha ma'lumotni nusxalaydi:

example.go
original := [3]int{255, 128, 0}
copy := original    // to'liq nusxa
copy[0] = 0
fmt.Println(original[0]) // hali ham 255

Xo'sh, massivni qachon ishlatasiz? O'lcham ma'lum va hech qachon o'zgarmaydigan bo'lganda. RGB rang kanallari, HTTP status kategoriyalari, SHA-256 xesh (har doim 32 bayt). Agar o'lcham o'zgarishi mumkin bo'lsa yoki element qo'shish/olib tashlash kerak bo'lsa, slicedan foydalaning.

Amalda, slicelar 99% holatlarda ishlatiladi. Lekin massivlar har bir slicening tagidagi fundament hisoblanadi. Ular slicelar ishora qiladigan qat'iy o'lchamli xotira blokidir. Istalgan massivni arr[:] bilan slicega aylantirish mumkin.

>_ Exercise

Server so'rovga javob berganda, status kodi deb ataladigan sonni qaytaradi. 200 — OK degani, 404 — topilmadi, 500 — serverda nimadir buzilgan degani. Bu kodlar birinchi raqamiga qarab aynan 5 ta kategoriyaga bo'linadi. Bu hech qachon o'zgarmaydi, shuning uchun massiv uchun mukammal mos keladi.

Funksiya yozing:

StatusCategory HTTP status kodini (100-599) qabul qilib, kategoriya nomini qaytaradi. Funksiya ichida [5]string massivini shu tartibda kategoriyalar bilan aniqlang: "Informational", "Success", "Redirection", "Client Error", "Server Error".

Birinchi raqamni olish uchun butun sonli bo'lishdan (code / 100) foydalaning, so'ng massiv indeksini olish uchun 1 ni ayiring. Masalan, 404 / 1004 beradi, 1 ayirilganda indeks 3 ("Client Error") bo'ladi. 100-599 diapazonidan tashqaridagi kodlar uchun "Unknown" qaytaring.

example.go
StatusCategory(code int) string

Misollar:

  • StatusCategory(200) "Success" qaytaradi
  • StatusCategory(404) "Client Error" qaytaradi
  • StatusCategory(600) "Unknown" qaytaradi

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

O'lcham qat'iy va ma'lum bo'lganda massivlardan foydalaning. Qolgan barcha holatlarda slicelardan foydalaning. Ular orasida arr[:] bilan aylantiring.

NEXT UP

Under the Hood

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Arrays: The Fixed Sibling

Massivlar: qat'iy o'lchamli qarindosh

example.go
pixel := [3]int{255, 128, 0} // R, G, B
fmt.Println(pixel[0]) // 255 (qizil)
fmt.Println(pixel[2]) // 0 (ko'k)

Pikselda har doim aynan 3 ta rang kanali bor. 4-chisini qo'sha olmaysiz yoki bittasini tashlab yubora olmaysiz. Aynan shu uni tabiiy massiv qiladi.

Massivlarning qat'iy o'lchami turining o'zida mustahkamlangan. [3]int aynan 3 ta element saqlaydi. O'lcham turning bir qismi, shuning uchun [3]int va [5]int — butunlay boshqa turlar. Birini ikkinchisiga belgilab bo'lmaydi.

Massivlar shuningdek qiymat turlari hisoblanadi. Birini boshqa o'zgaruvchiga belgilash barcha ma'lumotni nusxalaydi:

example.go
original := [3]int{255, 128, 0}
copy := original    // to'liq nusxa
copy[0] = 0
fmt.Println(original[0]) // hali ham 255

Xo'sh, massivni qachon ishlatasiz? O'lcham ma'lum va hech qachon o'zgarmaydigan bo'lganda. RGB rang kanallari, HTTP status kategoriyalari, SHA-256 xesh (har doim 32 bayt). Agar o'lcham o'zgarishi mumkin bo'lsa yoki element qo'shish/olib tashlash kerak bo'lsa, slicedan foydalaning.

Amalda, slicelar 99% holatlarda ishlatiladi. Lekin massivlar har bir slicening tagidagi fundament hisoblanadi. Ular slicelar ishora qiladigan qat'iy o'lchamli xotira blokidir. Istalgan massivni arr[:] bilan slicega aylantirish mumkin.

>_ Exercise

Server so'rovga javob berganda, status kodi deb ataladigan sonni qaytaradi. 200 — OK degani, 404 — topilmadi, 500 — serverda nimadir buzilgan degani. Bu kodlar birinchi raqamiga qarab aynan 5 ta kategoriyaga bo'linadi. Bu hech qachon o'zgarmaydi, shuning uchun massiv uchun mukammal mos keladi.

Funksiya yozing:

StatusCategory HTTP status kodini (100-599) qabul qilib, kategoriya nomini qaytaradi. Funksiya ichida [5]string massivini shu tartibda kategoriyalar bilan aniqlang: "Informational", "Success", "Redirection", "Client Error", "Server Error".

Birinchi raqamni olish uchun butun sonli bo'lishdan (code / 100) foydalaning, so'ng massiv indeksini olish uchun 1 ni ayiring. Masalan, 404 / 1004 beradi, 1 ayirilganda indeks 3 ("Client Error") bo'ladi. 100-599 diapazonidan tashqaridagi kodlar uchun "Unknown" qaytaring.

example.go
StatusCategory(code int) string

Misollar:

  • StatusCategory(200) "Success" qaytaradi
  • StatusCategory(404) "Client Error" qaytaradi
  • StatusCategory(600) "Unknown" qaytaradi

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

O'lcham qat'iy va ma'lum bo'lganda massivlardan foydalaning. Qolgan barcha holatlarda slicelardan foydalaning. Ular orasida arr[:] bilan aylantiring.

NEXT UP

Under the Hood