Bytes, Runes & Sized Types
Siz int, float64, string, va bool ni bilasiz. Aniq nazorat kerak bo'lganda Go'da yana boshqa turlar bor.
O'lchamli butun sonlar (Sized Integers)
Oddiy int turi mashinangizga moslashadi (odatda 64-bit). Lekin ba'zida aniq o'lcham kerak bo'ladi:
| TUR | BITLAR | DIAPAZON |
|---|---|---|
int8 | 8 | -128 dan 127 gacha |
int16 | 16 | -32,768 dan 32,767 gacha |
int32 | 32 | ±2 milliard |
int64 | 64 | ±9 kvintillion |
Ishorasiz butun sonlar (Unsigned Integers)
Son manfiy bo'la olmasligini bilsangiz, ishorasiz (unsigned) turlardan foydalaning. Ular manfiy diapazonni ikki barobar ko'proq musbat diapazonga almashtiradi:
| TUR | BITLAR | DIAPAZON |
|---|---|---|
uint8 | 8 | 0 dan 255 gacha |
uint16 | 16 | 0 dan 65,535 gacha |
uint32 | 32 | 0 dan ~4 milliardgacha |
uint64 | 64 | 0 dan ~18 kvintiliongacha |
Alohidalar
| TUR | NIMA U | QACHON ISHLATISH |
|---|---|---|
byte | uint8 uchun alias | Xom (raw) ma'lumot, fayl tarkibi, tarmoq baytlari |
rune | int32 uchun alias | Unicode belgilar |
float32 | float64 dan kamroq aniqlik | Grafika, aniq API'lar |
rune belgini son sifatida saqlaydi. 'A' — 65, '日' — 26085:
var b byte = 255 // uint8 bilan bir xil
var r rune = '日' // int32 bilan bir xil
fmt.Println(b) // 255
fmt.Println(string(r)) // 日>_ Exercise
Runelar shunchaki sonlar bo'lgani uchun, ular ustida matematik amal bajarish mumkin. Unicode'da kichik harf 'a' — 97, katta harf 'A' — 65. Farq doim 32 ga teng.
toUpper ni to'ldiring. Agar rune kichik harf bo'lsa ('a' va 'z' orasida), uni katta harfga aylantirish uchun 32 ni ayiring. Aks holda uni o'zgartirmasdan qaytaring.
Misollar:
- •
toUpper('g')→'G' - •
toUpper('z')→'Z' - •
toUpper('A')→'A'(allaqachon katta harf) - •
toUpper('3')→'3'(harf emas)
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
byte — bu uint8, rune — bu int32. Xotira yoki protokol aniqligi muhim bo'lganda o'lchamli turlardan foydalaning. Aks holda int va float64 bilan qoling.
NEXT UP
Strings Under the Hood
$ go run main.go
Kodingizni ishga tushiring