Go (programozási nyelv)

Go

Paradigmacompiler által fordított, konkurens, imperatív
Jellemző kiterjesztés.go
Megjelent2009
TervezőRobert Griesemer, Rob Pike és Ken Thompson
Fejlesztő
Utolsó kiadás1.22.4 (2024. június 4.)[1]
Fordítóprogramgc (8g, 6g), gccgo
Hatással volt ráC++ és Python; hatott rá: Limbo, occam
Operációs rendszerLinux, Mac OS X, FreeBSD, OpenBSD, MS Windows, Plan 9,[2] Dragonfly BSD, Solaris
LicencBSD[3]
Weboldal

A Go a Google által kifejlesztett,[4] compiler által fordított, konkurens programozási nyelv. A nyelvet Robert Griesemer, Rob Pike és Ken Thompson tervezte. A jelenlegi implementációi közül a Gc C nyelvben íródott, szintaktikai elemzésre (parserként) yacc/bison-t használ, míg a Gccgo C++ front-endjét (felhasználóval kapcsolatot tartó réteg) a standard GCC back-endhez (tényleges feldolgozást végző réteg) csatolt rekurzív parser (recursive descent parser) egészíti ki.[5]

A Go szintaxisa a C nyelvéhez áll közel, a típusdeklaráció kivételével; az egyéb szintaktikai eltérések közé tartoznak a for ciklus és a feltételes kifejezés (if) hiányzó zárójelei. A nyelv támogatja a szemétgyűjtést. A Go konkurenciamodellje Tony Hoare CSP-jén alapszik. A kihagyott funkciók közé tartozik a kivételkezelés, az öröklődés, a generikus programozás és a metódusok újradefiniálása (method overriding). A Javától és a C++-tól eltérően a map-ek (asszociatív tömbök) beépített nyelvi elemek, éppúgy mint a stringek.

Problémák a névvel[szerkesztés]

A Google által a nyelv nevének választott „Go” ütközik a F. G. McCabe és K. L. Clark által 2004-ben kifejlesztett programozási nyelv, a Go! nevével.[6] A problémáról szó van a Google Go-oldalain, jelenleg a legnépszerűbb ötlet az, hogy a Google nyelvét át kellene nevezni „Issue 9”-re.[6]

Példák[szerkesztés]

Hello GO![szerkesztés]

Az alábbi egy „Helló, világ!”-program Go nyelven.

package main  import "fmt"  func main() {   fmt.Printf("Hello, World\n") } 

Egyszerű echo parancs[szerkesztés]

A Unix echo parancsának egy megvalósítása

package main  import (   "os";   "flag"; // parancssori opciók elemzésére )  var omitNewline = flag.Bool("n", false, "don't print final newline")  const (   Space = " ";   Newline = "\n"; )  func main() {   flag.Parse(); // az argumentumok listáját végignézi és beállítja a flageket   var s string = "";   for i := 0; i < flag.NArg(); i++ {     if i > 0 {       s += Space     }     s += flag.Arg(i)   }   if !*omitNewline {     s += Newline   }   os.Stdout.WriteString(s); } 

FizzBuzz teszt[szerkesztés]

package main //csomag neve  //Függőségek import (   "fmt" //Parancssori kiíráshoz... )  //A program futása a main-ban kezdődik func main() {   for i := 1; i < 100; i++ { // 1-től 100-ig for ciklus     fizz := ((i % 3) == 0) //osztható-e 3-mal     buzz := ((i % 5) == 0) //osztható-e 5-tel     if fizz && buzz { // Ha mindkettővel: fizzbuzz 	  fmt.Println("FizzBuzz")     } else if fizz { //ha csak 3-mal Fizz 	  fmt.Println("Fizz")     } else if buzz { //ha csak 5-tel Buzz 	  fmt.Println("Buzz")     } else { //Egyébként a szám maga 	  fmt.Println(i)     }   } } 

Források[szerkesztés]

  1. Release History
  2. Go Porting Efforts. Go Language Resources. cat-v, 2010. január 12. (Hozzáférés: 2010. január 18.)
  3. Text file LICENSE. (Hozzáférés: 2011. január 27.)
  4. Google-go-language
  5. http://golang.org/doc/go_faq.html#Implementation
  6. a b code.google.com

Fordítás[szerkesztés]

  • Ez a szócikk részben vagy egészben a Go (programming language) című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.

További információk[szerkesztés]