Ngaleupaskeun basa pamrograman Go 1.16

Pelepasan basa pamrograman Go 1.16 dibere, anu dikembangkeun ku Google kalayan partisipasi masarakat salaku solusi hibrida anu ngagabungkeun kinerja luhur basa anu disusun sareng kaunggulan basa skrip sapertos gampang nyerat kode. , laju ngembangkeun sarta panyalindungan kasalahan. Kodeu proyék disebarkeun dina lisénsi BSD.

Sintaksis Go dumasar kana unsur akrab tina basa C sareng sababaraha injeuman tina basa Python. Basana rada singket, tapi kodena gampang dibaca sareng kaharti. Kodeu Go disusun kana file laksana binér anu mandiri anu dijalankeun sacara asli tanpa nganggo mesin virtual (profil, modul debugging, sareng subsistem deteksi masalah runtime sanésna diintegrasikeun salaku komponén runtime), anu ngamungkinkeun kinerja anu dibandingkeun sareng program C.

Proyék ieu mimitina dikembangkeun kalayan panon pikeun program multi-threaded sareng operasi efisien dina sistem multi-inti, kalebet nyayogikeun sarana tingkat operator pikeun ngatur komputasi paralel sareng interaksi antara metode anu dieksekusi paralel. Basa ogé nyadiakeun panyalindungan diwangun-di ngalawan blok memori leuwih-dialokasikeun sarta nyadiakeun kamampuhan pikeun ngagunakeun collector sampah.

Fitur anyar konci diwanohkeun dina Go 1.16:

  • Ditambahkeun paket embed, anu nyayogikeun alat pikeun nampilkeun file sareng diréktori sawenang-wenang kana program. Diréktif "//go:embed" énggal disayogikeun pikeun netepkeun file anu bakal dipasang dina waktos kompilasi. Contona, nangtukeun "//go: embed test.txt" dina komentar kode lajeng nyatakeun variabel "var f embed.FS" bakal ngakibatkeun embedding tina file test.txt jeung kamampuhan pikeun ngakses eta ngaliwatan " f” déskripsi. Dina cara anu sami, anjeun tiasa nampilkeun file sareng sumber daya atanapi nilai individu tina jinis anu dipikabutuh pikeun digawé, contona, pikeun kéngingkeun variabel string "s" tina file version.txt, anjeun tiasa netepkeun: impor _ "embed " //go: embed version.txt var s string print (s)
  • Sacara standar, sistem modul anyar sareng dukungan vérsi terpadu ayeuna diperyogikeun, ngagentos manajemén kagumantungan berbasis GOPATH. Variabel lingkungan GO111MODULE ayeuna disetel ka "on" sacara standar sareng mode modul dianggo henteu paduli ayana file go.mod dina diréktori kerja atanapi indungna. Dina modeu anyar, ngawangun paréntah sapertos "go build" sareng "go test" ulah ngarobih eusi go.mod sareng go.sum, sareng paréntah "go install" ngolah argumen versi ("go install example.com/[email dijaga]"). Pikeun mulangkeun kabiasaan anu lami, robih GO111MODULE ka "otomatis". Perhatikeun yén 96% pamekar parantos ngalih ka sistem modul énggal.
  • linker geus dioptimalkeun. Pikeun proyék-proyék badag, perenah ayeuna 20-25% leuwih gancang sarta merlukeun 5-15% memori kirang.
  • Kompiler parantos nambihan dukungan pikeun ékspansi inline fungsi kalayan definisi anu disingkat tina "pikeun" puteran, nilai metode sareng konstruksi 'type switch'.
  • Ditambahkeun dukungan pikeun sistem Apple anu dilengkepan chip Apple M1 ARM énggal. Ditambahkeun port netbsd / arm64 sareng openbsd / mips64 kalayan dukungan pikeun NetBSD dina ARM 64-bit sareng OpenBSD dina sistem MIPS64. Ditambahkeun dukungan pikeun cgo sareng mode "-buildmode = pai" kana port linux / riscv64.
  • Rojongan pikeun mode kompilasi x87 parantos dileungitkeun (GO386=387). Rojongan pikeun prosesor tanpa instruksi SSE2 ayeuna sayogi ngalangkungan mode parangkat lunak "GO386=softfloat".

Salaku tambahan, urang tiasa perhatikeun mimiti nguji sékrési béta tina basa Dart 2.12, dimana modeu aman pikeun ngagunakeun nilai "Null" (kaamanan null) parantos stabil, anu bakal ngabantosan nyegah kacilakaan anu disababkeun ku usaha ngagunakeun variabel anu. nilai téh undefined tur disetel ka "Null". Modeu nunjukkeun yén variabel henteu tiasa gaduh nilai nol kecuali aranjeunna sacara eksplisit ditugaskeun nilai nol. Modeu mastikeun ngahormatan jinis variabel, anu ngamungkinkeun kompiler pikeun nerapkeun optimasi tambahan. Patuh jinis dipariksa dina waktos kompilasi, contona, upami anjeun nyobian napelkeun nilai "Null" kana variabel kalayan jinis anu henteu nunjukkeun kaayaan anu teu ditangtukeun, sapertos "int", kasalahan bakal ditingalikeun.

sumber: opennet.ru

Tambahkeun komentar