A Go a Google által kifejlesztett,Google-go-language 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.http://golang.org/doc/go_faq.html#Implementation
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 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.code.google.com 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.
Példák
Hello GO! Az alábbi egy „Helló, világ!”-program Go nyelven. package main
import "fmt"
func main() { fmt.Printf("Hello, World\n") }
Egyszerű echo parancs 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 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)
Jegyzetek
Fordítás
További információk Interaktív körutazás a Go világába The Go language Go language FAQ Index: Saját programnyelvet mutatott be a Google Google Go captures developers' imaginations
IRC : go-nuts on irc.freenode.net Mailing list : http://groups.google.com/group/golang-nuts
Kategória:Programozási nyelvek Kategória:Google Kategória:Magas szintű programozási nyelvek