Go sintaksisi Python tilidan ba'zi qarzlar bilan C tilining tanish elementlariga asoslangan. Til juda ixcham, ammo kodni o'qish va tushunish oson. Go kodi virtual mashinadan foydalanmasdan tabiiy ravishda ishlaydigan mustaqil ikkilik bajariladigan fayllarga kompilyatsiya qilinadi (profillash, disk raskadrovka va boshqa ish vaqtidagi muammolarni aniqlash quyi tizimlari quyidagi tarzda birlashtirilgan).
Loyiha dastlab ko'p bosqichli dasturlash va ko'p yadroli tizimlarda samarali ishlash, shu jumladan parallel hisoblashni tashkil qilish uchun operator darajasidagi vositalarni taqdim etish va parallel bajariladigan usullar o'rtasidagi o'zaro ta'sirni hisobga olgan holda ishlab chiqilgan. Til, shuningdek, ortiqcha ajratilgan xotira bloklaridan o'rnatilgan himoyani ta'minlaydi va axlat yig'uvchidan foydalanish imkoniyatini beradi.
asosiy
- Π ΠΏΠ°ΠΊΠ΅ΡΠ΅ crypto/tls Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°
TLS 1.3 . ΠΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ Β«crypto/ed25519Β» Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΡΠΈΡΡΠΎΠ²ΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠ΅ΠΉ Ed25519; - ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π½ΠΎΠ²ΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠ² ΡΠΈΡΡΠΎΠ²ΡΡ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ² Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΠΈΡΠ΅Π» (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 0b101), Π²ΠΎΡΡΠΌΠ΅ΡΠΈΡΠ½ΡΡ (0o377), ΠΌΠ½ΠΈΠΌΡΡ (2.71828i) ΠΈ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΡ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ (0x1p-1021), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° Β«_Β» Π΄Π»Ρ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΡΡ Π² Π±ΠΎΠ»ΡΡΠΈΡ ΡΠΈΡΠ»Π°Ρ (1_000_000);
- Π‘Π½ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΡ ΡΡΡΡΡΠΈΠΊΠΎΠ² Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ ΡΠ΄Π²ΠΈΠ³Π°, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π»ΠΈΡΠ½ΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π² ΡΠΈΠΏ uint ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Β«βΉβΉΒ» ΠΈ Β«βΊβΊΒ»;
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Illumos (GOOS=illumos). ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ Android 10. ΠΠΎΠ²ΡΡΠ΅Π½Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ Π²Π΅ΡΡΠΈΡΠΌ FreeBSD (11.2) ΠΈ macOS (10.11 Β«El CapitanΒ»)
- ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΎ ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ GOPATH. ΠΠΎΠΏΡΠ΅ΠΊΠΈ ΡΠ°Π½Π΅Π΅ ΠΎΠ·Π²ΡΡΠ΅Π½Π½ΡΠΌ ΠΏΠ»Π°Π½Π°ΠΌ Π² Go 1.13 Π΄Π°Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ°ΠΊ ΠΈ Π½Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ GO111MODULE=on ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈ ΡΠ»ΡΡΡΠ΅Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ. ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Ρ ΠΊ ΡΠ°Π±ΠΎΡΠ΅ Π²Π½ΡΡΡΠΈ Π΄Π΅ΡΠ΅Π²Π° GOPATH, ΠΌΠΎΠ³ΡΡ ΡΠ²Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Ρ ΡΡΡΡΠΎΠΌ Π²Π΅ΡΡΠΈΠΉ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΡΠΎΡΠ»ΡΡ Π²ΡΠΏΡΡΠΊΠΎΠ² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ go Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΈΠ»ΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΉΠ» go.mod, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΏΡΠΈ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ GOPATH/src. ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ: GOPRIVATE, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ°Ρ ΠΏΡΡΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΈ GOSUMDB, Π·Π°Π΄Π°ΡΡΠ°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π±Π°Π·Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΌΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π² ΡΠ°ΠΉΠ»Π΅ go.sum;
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Β«goΒ» ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΈΡ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π·Π΅ΡΠΊΠ°Π»ΠΎ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ Π±Π°Π·Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΌΠΌ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Google (proxy.golang.org, sum.golang.org ΠΈ index.golang.org);
- ΠΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΎΠ»ΡΠΊΠΎ Π±ΠΈΠ½Π°ΡΠ½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΡΠ±ΠΎΡΠΊΠ° ΠΏΠ°ΠΊΠ΅ΡΠ° Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Β«//go:binary-only-packageΒ» ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π²ΡΠ²ΠΎΠ΄Ρ ΠΎΡΠΈΠ±ΠΊΠΈ;
- Π ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«go getΒ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΡΡΠΈΠΊΡΠ° Β«@patchΒ», ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ, ΡΡΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ½ Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΡΡΡΠ΅Π³ΠΎ Π²ΡΠΏΡΡΠΊΠ°, Π½ΠΎ Π±Π΅Π· ΡΠΌΠ΅Π½Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ;
- ΠΡΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«goΒ» ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΡΡΠΎΠΊΠΈ Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ Π²Π΅ΡΡΠΈΠΈ, ΠΏΡΡΠ°ΡΡΡ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΡΠ΅Π²Π΄ΠΎ-Π²Π΅ΡΡΠΈΠΉ Ρ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠΌ ΠΈΠ· ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ;
- Qo'shilgan qo'llab-quvvatlash
ΠΈΠ½ΡΠΏΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ (error wrapping) ΡΠ΅ΡΠ΅Π· ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΡΡΠΎΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠΏΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ,xato Β«eΒ» ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±ΡΡΠ½ΡΡΠ° Π½Π°Π΄ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ Β«wΒ» ΡΠ΅ΡΠ΅Π· ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π°Ochish , Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ΅Π³ΠΎ Β«wΒ». ΠΠ±Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ Β«eΒ» ΠΈ Β«wΒ» Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ Β«wΒ», Π½ΠΎ Β«eΒ» ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΊ Β«wΒ» ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ Π΅Π³ΠΎ ΠΏΠΎ ΠΈΠ½ΠΎΠΌΡ; - ΠΡΠΎΠ²Π΅Π΄Π΅Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ runtime-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² (ΠΎΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΠΏΡΠΈΡΠΎΡΡ ΡΠΊΠΎΡΠΎΡΡΠΈ Π΄ΠΎ 30%) ΠΈ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π°Π³ΡΠ΅ΡΡΠΈΠ²Π½ΠΎΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ (ΡΠ°Π½Π΅Π΅ ΠΏΠ°ΠΌΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π»Π°ΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΡΡΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΈΠ½ΡΡ, Π° ΡΠ΅ΠΉΡΠ°Ρ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΡΡΠ΅Π·Π°Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΊΡΡΠΈ).
Manba: opennet.ru