Share to: share facebook share twitter share wa share telegram print page

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.24.2 (stabil verzió, 2025. április 1.)[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

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

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

  1. Release History. (Hozzáférés: 2025. április 13.)
  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

  • 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

Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Portal di Ensiklopedia Dunia

Kembali kehalaman sebelumnya