Go програмчлалын хэлийг гаргах 1.16

Google-ээс олон нийтийн оролцоотойгоор боловсруулж буй Go 1.16 програмчлалын хэлийг танилцуулж байна. Энэ нь хөрвүүлсэн хэлний өндөр гүйцэтгэлийг код бичихэд хялбар гэх мэт скрипт хэлний давуу талуудтай хослуулсан эрлийз шийдэл юм. , хөгжлийн хурд, алдаанаас хамгаалах. Төслийн кодыг BSD лицензийн дагуу түгээдэг.

Go-ийн синтакс нь Python хэлнээс зарим зээл авсан Си хэлний танил элементүүд дээр суурилдаг. Хэл нь нэлээд товч боловч кодыг унших, ойлгоход хялбар байдаг. Go код нь виртуал машин ашиглахгүйгээр бие даан ажилладаг хоёртын файлуудад хөрвүүлэгддэг (профайл үүсгэх, дибаг хийх модулиуд болон бусад ажиллах үеийн асуудлыг илрүүлэх дэд системүүд нь ажиллах үеийн бүрэлдэхүүн хэсэг болгон нэгтгэгддэг) бөгөөд энэ нь C програмуудтай харьцуулах боломжтой гүйцэтгэлийг бий болгодог.

Төслийг эхлээд олон урсгалтай програмчлал, олон цөмт системүүд дээр үр ашигтай ажиллуулах, түүний дотор зэрэгцээ тооцооллыг зохион байгуулах операторын түвшний хэрэгслээр хангах, зэрэгцээ гүйцэтгэх аргуудын хоорондын харилцан үйлчлэлийг харгалзан боловсруулсан болно. Энэ хэл нь хэт их хуваарилагдсан санах ойн блокоос хамгаалагдсан бөгөөд хог цуглуулагчийг ашиглах боломжийг олгодог.

Go 1.16-д нэвтрүүлсэн гол шинэ боломжууд:

  • Програмд ​​дурын файлууд болон лавлахуудыг оруулах хэрэгслүүдээр хангадаг embed багцыг нэмсэн. Шинэ "//go:embed" удирдамжийг хөрвүүлэх үед оруулах файлуудыг зааж өгсөн болно. Жишээлбэл, кодын тайлбарт “//go:embed test.txt” гэж зааж өгөөд “var f embed.FS” хувьсагчийг зарласнаар test.txt файлыг суулгаж, “хэрэглэх боломжтой болно. f” тодорхойлогч. Үүнтэй адилаар та ажилд шаардлагатай тодорхой төрлийн нөөц эсвэл бие даасан утгууд бүхий файлуудыг оруулж болно, жишээлбэл, version.txt файлаас "s" тэмдэгтийн хувьсагчийг авахын тулд та дараахийг зааж өгч болно: import _ "ebed" ” //go:embed version.txt var s string print(s)
  • Анхдагч байдлаар, GOPATH-д суурилсан хараат байдлын удирдлагыг орлуулж, нэгдсэн хувилбарын дэмжлэг бүхий шинэ модулийн систем шаардлагатай болсон. GO111MODULE орчны хувьсагчийг өгөгдмөлөөр "асаалттай" болгож тохируулсан бөгөөд модулийн горимыг ажиллаж байгаа эсвэл үндсэн лавлахад go.mod файл байгаа эсэхээс үл хамааран ашигладаг. Шинэ горимд "go build", "go test" зэрэг бүтээх командууд нь go.mod болон go.sum-ын агуулгыг өөрчлөхгүй бөгөөд "go install" команд нь хувилбарын аргументуудыг боловсруулдаг ("go install example.com/"[имэйлээр хамгаалагдсан]"). Хуучин үйлдлийг буцаахын тулд GO111MODULE-г "авто" болгож өөрчилнө үү. Хөгжүүлэгчдийн 96% нь шинэ модулийн системд аль хэдийн шилжсэн гэж тэмдэглэжээ.
  • Холбогчийг оновчтой болгосон. Томоохон төслүүдийн хувьд зохион байгуулалт нь одоо 20-25% илүү хурдан бөгөөд 5-15% бага санах ой шаарддаг.
  • Хөрвүүлэгч нь "for" гогцоо, аргын утгууд болон "төрөл солих" бүтцийн товчилсон тодорхойлолт бүхий функцүүдийг шугаман өргөтгөх дэмжлэгийг нэмсэн.
  • Шинэ Apple M1 ARM чипээр тоноглогдсон Apple-ийн системийн дэмжлэгийг нэмсэн. 64 битийн ARM дээр NetBSD, MIPS64 систем дээр OpenBSD-ийг дэмждэг netbsd/arm64 болон openbsd/mips64 портуудыг нэмсэн. Linux/riscv64 порт дээр cgo болон “-buildmode=pie” горимын дэмжлэгийг нэмсэн.
  • X87 эмхэтгэлийн горимыг дэмжихээ больсон (GO386=387). SSE2 зааваргүй процессоруудын дэмжлэгийг одоо "GO386=softfloat" програм хангамжийн горимоор ашиглах боломжтой.

Нэмж дурдахад бид "Null" утгыг ашиглах аюулгүй горимыг тогтворжуулсан Dart 2.12 хэлний бета хувилбарыг туршиж эхэлснийг тэмдэглэж болох бөгөөд энэ нь хувьсагчдыг ашиглах оролдлогоос үүдэлтэй эвдрэлээс зайлсхийхэд тусална. утга нь тодорхойгүй бөгөөд "Null" гэж тохируулсан. Энэ горим нь хувьсагчдад null утгыг тодорхой зааж өгөөгүй л бол null утгатай байж болохгүй гэсэн үг юм. Энэ горим нь хувьсагчийн төрлүүдийг хатуу хүндэтгэдэг бөгөөд энэ нь хөрвүүлэгчид нэмэлт оновчлол хийх боломжийг олгодог. Төрөл нийцэж байгаа эсэхийг эмхэтгэх үед шалгадаг, жишээлбэл, "int" гэх мэт тодорхойгүй төлөвтэй хувьсагчид "Null" утгыг оноохыг оролдвол алдаа гарч ирнэ.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх