Rilis basa pamrograman Go 1.16 ditampilake, sing dikembangake dening Google kanthi partisipasi komunitas minangka solusi hibrida sing nggabungake kinerja basa sing dikompilasi kanthi kaluwihan basa skrip kaya gampang nulis kode. , kacepetan pembangunan lan pangayoman kesalahan. Kode proyek disebarake miturut lisensi BSD.
Sintaks Go adhedhasar unsur akrab saka basa C kanthi sawetara pinjaman saka basa Python. Basane cukup ringkes, nanging kode kasebut gampang diwaca lan dingerteni. Kode Go dikompilasi dadi file eksekusi binar sing mlaku kanthi asli tanpa nggunakake mesin virtual (profil, modul debugging, lan subsistem deteksi masalah runtime liyane digabungake minangka komponen runtime), sing ngidini kinerja sing bisa dibandhingake karo program C.
Proyek kasebut wiwitane dikembangake kanthi fokus program multi-threaded lan operasi sing efisien ing sistem multi-inti, kalebu nyedhiyakake sarana tingkat operator kanggo ngatur komputasi paralel lan interaksi antarane metode sing dieksekusi paralel. Basa kasebut uga nyedhiyakake proteksi sing dibangun marang pamblokiran memori sing diparengake lan menehi kemampuan kanggo nggunakake kolektor sampah.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π½ΠΎΠ²ΡΠ΅ΡΡΠ²Π°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π² Π²ΡΠΏΡΡΠΊΠ΅ Go 1.16:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ°ΠΊΠ΅Ρ embed, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ². ΠΠ»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΡΡΠΎΠΈΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½ΠΎΠ²Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° Β«//go:embedΒ». ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π² ΠΊΠΎΠ΄Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Β«//go:embed test.txtΒ» ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΠΎΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«var f embed.FSΒ» ΠΏΡΠΈΠ²Π΅Π΄ΡΡ Π² Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° test.txt ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ Π½Π΅ΠΌΡ ΡΠ΅ΡΠ΅Π· Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ Β«fΒ». ΠΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΉΠ»Ρ Ρ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«sΒ» ΠΈΠ· ΡΠ°ΠΉΠ»Π° version.txt ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ: import _ Β«embedΒ» //go:embed version.txt var s string print(s)
- ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Ρ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΡΠ»Π° Π½Π° ΡΠΌΠ΅Π½Ρ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ GOPATH. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ GO111MODULE ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΡΡΠ°Π²Π»Π΅Π½Π° Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«onΒ» ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ ΡΠ΅ΠΆΠΈΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΡ ΡΠ°ΠΉΠ»Π° go.mod Π² ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΠΈΠ»ΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅. Π Π½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ±ΠΎΡΠΎΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Β«go buildΒ» ΠΈ Β«go testΒ», Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ go.mod ΠΈ go.sum, Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«go installΒ» ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π²Π΅ΡΡΠΈΠΈ (Β«go install example.com/[email dilindhungi]Β»). ΠΠ»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ GO111MODULE Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«autoΒ». ΠΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ, ΡΡΠΎ 96% ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΡΠ»ΠΈ Π½Π° Π½ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ.
- ΠΡΠΎΠ²Π΅Π΄Π΅Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΠ°. ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π° 20-25% Π±ΡΡΡΡΠ΅Π΅ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π° 5-15% ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ.
- Π ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° inline-ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Ρ ΡΠΎΠΊΡΠ°ΡΡΠ½Π½ΡΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠΈΠΊΠ»ΠΎΠ² Β«forΒ», ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ (method values) ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ βtype switchβ.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΈΡΡΠ΅ΠΌ Apple, ΠΎΡΠ½Π°ΡΡΠ½Π½ΡΡ Π½ΠΎΠ²ΡΠΌ ARM-ΡΠΈΠΏΠΎΠΌ Apple M1. ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΏΠΎΡΡΡ netbsd/arm64 ΠΈ openbsd/mips64 Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ NetBSD Π½Π° 64-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ ARM ΠΈ OpenBSD Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°Ρ MIPS64. Π ΠΏΠΎΡΡ linux/riscv64 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° cgo ΠΈ ΡΠ΅ΠΆΠΈΠΌΠ° Β«-buildmode=pieΒ».
- ΠΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ΅ΠΆΠΈΠΌΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ x87 (GO386=387). ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² Π±Π΅Π· ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ SSE2 ΡΠ΅ΠΏΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏΠ½Π° ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ Β«GO386=softfloatΒ».
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ Π½Π°ΡΠ°Π»ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π΅ΡΠ°-Π²ΡΠΏΡΡΠΊΠ° ΡΠ·ΡΠΊΠ° Dart 2.12, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ ΡΠ΅ΠΆΠΈΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Β«NullΒ» (null safety), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΊΡΠ°Ρ
ΠΎΠ², Π²ΡΠ·Π²Π°Π½Π½ΡΡ
ΠΏΠΎΠΏΡΡΠΊΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΈ Π²ΡΡΡΠ°Π²Π»Π΅Π½ΠΎ Π² Β«NullΒ». Π Π΅ΠΆΠΈΠΌ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΈΠΌ ΡΠ²Π½ΠΎ Π½Π΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ null. Π ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΡΡΠΎΠ³ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ ΡΠΈΠΏΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠΏΡΡΠΊΠΈ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Β«NullΒ» ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ ΡΠΈΠΏΠΎΠΌ, Π½Π΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡΠΈΠΌ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ Β«intΒ», Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½Π° ΠΎΡΠΈΠ±ΠΊΠ°.
Source: opennet.ru