GoDasturchi
Bytes, Runes & Sized Types

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:

TURBITLARDIAPAZON
int88-128 dan 127 gacha
int1616-32,768 dan 32,767 gacha
int3232±2 milliard
int6464±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:

TURBITLARDIAPAZON
uint880 dan 255 gacha
uint16160 dan 65,535 gacha
uint32320 dan ~4 milliardgacha
uint64640 dan ~18 kvintiliongacha

Alohidalar

TURNIMA UQACHON ISHLATISH
byteuint8 uchun aliasXom (raw) ma'lumot, fayl tarkibi, tarmoq baytlari
runeint32 uchun aliasUnicode belgilar
float32float64 dan kamroq aniqlikGrafika, aniq API'lar

rune belgini son sifatida saqlaydi. 'A' — 65, '日' — 26085:

example.go
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.

Hints (0/3)

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

🔒🔒🔒🔒
OUTPUT

$ go run main.go
Kodingizni ishga tushiring

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:

TURBITLARDIAPAZON
int88-128 dan 127 gacha
int1616-32,768 dan 32,767 gacha
int3232±2 milliard
int6464±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:

TURBITLARDIAPAZON
uint880 dan 255 gacha
uint16160 dan 65,535 gacha
uint32320 dan ~4 milliardgacha
uint64640 dan ~18 kvintiliongacha

Alohidalar

TURNIMA UQACHON ISHLATISH
byteuint8 uchun aliasXom (raw) ma'lumot, fayl tarkibi, tarmoq baytlari
runeint32 uchun aliasUnicode belgilar
float32float64 dan kamroq aniqlikGrafika, aniq API'lar

rune belgini son sifatida saqlaydi. 'A' — 65, '日' — 26085:

example.go
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.

Hints (0/3)

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