Estas prezentita la eldono de la programlingvo Go 1.22, kiu estas disvolvita de Google kun la partopreno de la komunumo kiel hibrida solvo, kiu kombinas la altan rendimenton de kompilitaj lingvoj kun tiaj avantaĝoj de skriptlingvoj kiel facileco de skribkodo. , rapideco de disvolviĝo kaj erarprotekto. La projektkodo estas distribuita sub la permesilo BSD.
La sintakso de Go estas bazita sur konataj elementoj de la C-lingvo kun kelkaj pruntoj de la Oberon-lingvo. La lingvo estas sufiĉe konciza, sed la kodo estas facile legebla kaj komprenebla. Go-kodo estas kompilita en apartajn binarajn ruleblajn dosierojn, kiuj funkcias denaske, sen la uzo de virtuala maŝino (profilado, sencimigaj moduloj kaj aliaj rultempaj problemo-detektaj subsistemoj estas integritaj kiel rultempaj komponentoj), kio permesas rendimenton komparebla al C-programoj.
La projekto estas komence evoluigita kun okulo al plurfadena programado kaj efika operacio sur plurkernaj sistemoj, inkluzive de disponigado de funkciigist-nivelaj rimedoj por organizado de paralela komputado kaj interagado inter paralel-efektivigitaj metodoj. La lingvo ankaŭ disponigas enkonstruitan protekton kontraŭ troasignitaj memorblokoj kaj disponigas la kapablon uzi rubkolektilon.
Inter la ŝanĝoj en la nova eldono:
- Subteno por difini intervalojn de entjeroj estis aldonita al "por" bukloj, ekzemple, por iteracii tra valoroj de 0 ĝis 9, vi nun povas uzi la buklon "por i := intervalo 10 {…}".
- Eksperimenta (GOEXPERIMENT=rangefunc) subteno por intervalfunkcioj estis aldonita al por-bukloj, permesante specifi funkcion kiel iteratoron. Ekzemple, "por i, x := intervaltranĉaĵoj.Malantaŭen(s) {…}"
- Delonga problemo kun por-bukloj, kiu kaŭzis, ke gorutinaj alvokoj kunhavigu buklajn variablojn trans iteracioj, estas solvita. Ekzemple, valoroj := []string{"a", "b", "c"} por _, v := range valoroj { go func() { fmt.Println(v) done
fonto: opennet.ru
