Tso Tawm ntawm Go programming lus 1.16

Qhov kev tso tawm ntawm Go 1.16 programming lus yog nthuav tawm, uas yog tsim los ntawm Google nrog kev koom tes ntawm cov zej zog raws li ib tug hybrid tov uas muab cov kev ua tau zoo ntawm cov lus compiled nrog xws li zoo ntawm scripting languages ​​li yooj yim sau code. , ceev ntawm txoj kev loj hlob thiab kev tiv thaiv yuam kev. Txoj haujlwm code raug faib raws li BSD daim ntawv tso cai.

Go's syntax yog raws li paub cov ntsiab lus ntawm C lus nrog qee qhov qiv los ntawm Python hom lus. Cov lus yog cov ntsiab lus, tab sis cov cai yooj yim nyeem thiab nkag siab. Go code yog muab tso ua ke rau hauv ib leeg-ib leeg binary executable cov ntaub ntawv uas khiav ib txwm tsis siv lub tshuab virtual (profiling, debugging modules, thiab lwm yam runtime teeb meem nrhiav kom tau subsystems yog integrated raws li runtime Cheebtsam), uas tso cai rau kev ua tau zoo piv rau C cov kev pab cuam.

Qhov project yog pib tsim nrog lub qhov muag rau ntau txoj xov xwm kev ua haujlwm thiab kev ua haujlwm tau zoo ntawm ntau cov tub ntxhais kawm, suav nrog kev muab cov neeg ua haujlwm-qib txhais tau tias rau kev teeb tsa cov lej sib npaug thiab kev sib cuam tshuam ntawm cov txheej txheem sib luag. Cov lus kuj tseem muaj kev tiv thaiv built-in tiv thaiv ntau tshaj kev faib cov cim xeeb blocks thiab muab lub peev xwm los siv cov khoom khib nyiab.

Cov yam ntxwv tshiab tseem ceeb tau qhia hauv Go 1.16:

  • Ntxiv cov embed pob, uas muab cov cuab yeej rau embedding arbitrary ntaub ntawv thiab directory rau hauv qhov kev pab cuam. Cov lus qhia tshiab "//go: embed" yog muab los qhia kom meej cov ntaub ntawv yuav tsum tau embedded ntawm compile lub sij hawm. Piv txwv li, qhia meej "//go: embed test.txt" hauv cov lus qhia code thiab tom qab ntawd tshaj tawm qhov hloov pauv "var f embed.FS" yuav ua rau embedding ntawm cov ntaub ntawv test.txt thiab muaj peev xwm nkag mus rau nws los ntawm " f” piav qhia. Nyob rau hauv ib txoj kev zoo sib xws, koj tuaj yeem embed cov ntaub ntawv nrog cov peev txheej lossis tus kheej qhov tseem ceeb ntawm qee yam tsim nyog rau kev ua haujlwm, piv txwv li, kom tau txais txoj hlua sib txawv "s" los ntawm cov ntaub ntawv version.txt, koj tuaj yeem qhia meej: import _ "embed ” //go: embed version.txt var s string print(s)
  • Los ntawm lub neej ntawd, qhov tshiab module system nrog kev txhawb nqa versioning yog tam sim no xav tau, hloov GOPATH-raws li kev tswj hwm kev vam meej. GO111MODULE ib puag ncig hloov pauv tam sim no tau teeb tsa rau "rau" los ntawm lub neej ntawd thiab cov qauv siv tau siv txawm hais tias muaj cov ntaub ntawv go.mod hauv cov ntawv ua haujlwm lossis niam txiv. Hauv hom tshiab, tsim cov lus txib xws li "mus tsim" thiab "mus sim" tsis hloov cov ntsiab lus ntawm go.mod thiab go.sum, thiab "mus nruab" cov lus txib ua cov lus sib cav ("mus nruab example.com/[email tiv thaiv]"). Txhawm rau rov qab tus cwj pwm qub, hloov GO111MODULE rau "auto". Nws tau sau tseg tias 96% ntawm cov neeg tsim khoom tau hloov mus rau qhov tshiab module.
  • Lub linker tau optimized. Rau tej yaam num loj, layout yog tam sim no 20-25% sai dua thiab yuav tsum tau 5-15% tsawg nco.
  • Lub compiler tau ntxiv kev txhawb nqa rau inline expansion ntawm kev ua haujlwm nrog cov ntsiab lus luv luv ntawm "rau" loops, txoj kev muaj nuj nqis thiab 'hom hloov' tsim.
  • Ntxiv kev txhawb nqa rau Apple systems nruab nrog Apple M1 ARM nti tshiab. Ntxiv netbsd/arm64 thiab openbsd/mips64 chaw nres nkoj nrog kev txhawb nqa rau NetBSD ntawm 64-ntsis ARM thiab OpenBSD ntawm MIPS64 systems. Ntxiv kev txhawb nqa rau cgo thiab "-buildmode = pie" hom rau qhov chaw nres nkoj linux/riscv64.
  • Kev them nyiaj yug rau x87 compilation hom tau raug txiav lawm (GO386=387). Kev them nyiaj yug rau SSE2 instructionless processors yog tam sim no muaj nyob rau ntawm "GO386 = softfloat" software hom.

Tsis tas li ntawd, peb tuaj yeem nco ntsoov qhov pib ntawm kev sim cov beta tso tawm ntawm Dart 2.12 hom lus, uas muaj kev nyab xeeb rau kev siv tus nqi "Null" (null kev nyab xeeb) tau ruaj khov, uas yuav pab kom tsis txhob muaj kev sib tsoo los ntawm kev sim siv cov hloov pauv uas nws tus nqi yog undefined thiab teem rau "Null". Hom implies tias qhov sib txawv tsis tuaj yeem muaj qhov tsis muaj nuj nqis tshwj tsis yog tias lawv tau qhia meej meej rau tus nqi null. Hom nruj me ntsis hwm cov hom sib txawv, uas tso cai rau lub compiler siv cov kev ua kom zoo ntxiv. Hom kev ua raws li kev soj ntsuam ntawm lub sijhawm sib sau, piv txwv li, yog tias koj sim muab tus nqi "Null" rau qhov sib txawv nrog hom uas tsis hais txog lub xeev tsis tau txhais, xws li "int", qhov yuam kev yuav tshwm sim.

Tau qhov twg los: opennet.ru

Ntxiv ib saib