ĂshtĂ« prezantuar versioni 1.22 i gjuhĂ«s sĂ« programimit Go, e cila zhvillohet nga Google nĂ« bashkĂ«punim me komunitetin si njĂ« zgjidhje hibride qĂ« kombinon performancĂ«n e lartĂ« tĂ« gjuhĂ«ve tĂ« kompiluara me avantazhet e gjuhĂ«ve skritpike, si lehtĂ«sia e shkrimit tĂ« kodit, shpejtĂ«sia e zhvillimit dhe mbrojtja nga gabimet. Kodi i projektit shpĂ«rndahet nĂ«n licencĂ«n BSD.
Sintaksa e Go bazohet në elemente të njohura të gjuhës C me huazime të veçanta nga gjuha Oberon. Gjuha është mjaft konçize, por kodi lexohet dhe perceptohet lehtësisht. Kodi në gjuhën Go kompilohet në skedarë executable të veçantë, që funksionojnë natyrshëm, pa përdorimin e një makine virtuale (modulet e profilimit, debuguese dhe nënkategoritë e tjera të zbulimit të problemeve integrohen si komponente runtime), duke mundësuar arritjen e një performance të ngjashme me programet në gjuhën C.
Projekti zhvillohet fillimisht me fokus në programimin me shumë procese dhe funksionimin efikas në sisteme me shumë bërthama, duke ofruar gjithashtu mjete të implementuara në nivelin e operatorëve për organizimin e llogaritjeve paralel dhe ndërveprimin ndërmjet metodave që ekzekutohen paralelisht. Gjuha gjithashtu ofron mjete të integruara mbrojtjeje nga dalja jashtë zonave të lejuara të blloqeve të alokuar të memorjes dhe siguron mundësinë e përdorimit të një mbledhësi të plehrave.
Ndryshimet në publikimin e ri përfshijnë:
- NĂ« ciklet "for" Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r pĂ«rcaktimin e intervaleve tĂ« numrave tĂ« plota, pĂ«r shembull, pĂ«r tĂ« iteruar vlerat nga 0 nĂ« 9 tani mund tĂ« pĂ«rdorim ciklin "for i := range 10 {âŠ}".
- NĂ« ciklet "for" Ă«shtĂ« shtuar mbĂ«shtetje eksperimentale (GOEXPERIMENT=rangefunc) pĂ«r funksionet e pĂ«rcaktimit tĂ« gamĂ«s, duke lejuar pĂ«rcaktimin e njĂ« funksioni si itereator. PĂ«r shembull, "for i, x := range slices.Backward(s) {âŠ}"
- ĂshtĂ« zgjidhur njĂ« problem i vjetĂ«r me ciklet "for", i cili shkaktonte qĂ« kur thirreshin korutina (goroutine), variablat e ciklit tĂ« pĂ«rdoren nĂ« iteracione tĂ« ndryshme. PĂ«r shembull, kodi values := []string{"a", "b", "c"} for _, v := range values { go func() { fmt.Println(v) done
Burimi: opennet.ru
