Go (programozási nyelv)

A Wikipédiából, a szabad enciklopédiából
Jump to navigation Jump to search
Go
Golang.png

Paradigma compiler által fordított, konkurens, imperatív
Jellemző kiterjesztés .go
Megjelent 2009
Tervező Robert Griesemer, Rob Pike és Ken Thompson
Fejlesztő
Utolsó kiadásgo1.8[1] (2017. február 16.)
Fordítóprogram gc (8g, 6g), gccgo
Hatással volt rá C++ és Python; hatott rá: Limbo, occam
Operációs rendszer Linux, Mac OS X, FreeBSD, OpenBSD, MS Windows, Plan 9,[2] Dragonfly BSD, Solaris
Licenc BSD[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. Go Blog - Go 1.8 is released
  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]

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