Tartalomjegyzék
Go nyelv
- Szerző: Sallai András
- Copyright © 2025, Sallai András
- Szerkesztve: 2025
- Licenc: CC BY-SA 4.0
- Web: https://szit.hu
Bevezetés
A Go nyelv Google által támogatott nyelv, de a tulajdonosa Robert Griesemer. 2007-ben kezdték, az első nyilvános kiadás 2009-ben volt. Névütközés miatt Golang nyelvnek szokták nevezni.
A fejlesztés során az egyszerűség és a hatékonyság volt a cél. Szintaxisa a C nyelvhez áll közel, a típusdeklaráció kivételével. De eltér az if és a ciklus utasítások szintaxisa is.
Webhely:
Helló Világ
Készítsünk egy hello.go nevű állományt, amelynek tartalma a következő:
- hello.go
package main import "fmt" func main() { fmt.Println("Helló Világ") }
Futtatás:
go run hello.go
Fordítás és fordított alkalmazás futtatása:
go build hello.go ./hello
A Go programokat egy .go kiterjesztésű fájlba írjuk. Futtatni a go run paranccsal tudjuk. Fordítás és futtatásra is lehetőség van.
Megjegyzés
// egy soros /* több soros megjegyzés */
Kivitel
- ki.go
package main func main() { println("Helló Világ!") }
- ki.go
package main import "fmt" func main() { fmt.Println("első") fmt.Println("második") }
- ki.go
package main import "fmt" func main() { fmt.Print("első") fmt.Println("második") }
Kifejezések:
- ki.go
fmt.Println(3 * 5)
Több paraméter:
fmt.Println("egy", "kettő")
Escape szekvenciák
- escape.go
package main import "fmt" func main() { fmt.Println("me\ntés") }
- escape.go
package main import "fmt" func main() { fmt.Println("men\tés") }
\a | Csengőhang |
\b | Backspace |
\\ | Backslash |
\t | Vízszintes tabulátor |
\n | Új sor |
\f | Lapdobás |
\r | Kocsi vissza |
\v | Függőleges tabulátor |
\' | Egyszeres idézőjel |
\" | Kétszeres idézőjel |
\x | pontosan két hexadecimális szám követi |
\ | pontosan három hexadecimális szám követi |
\u | pontosan négy hexadecimális szám követi |
\U | pontosan nyolc hexadecimális szám követi |
Változók
var a = 35
Egyszerűsített verzió:
a := 35
- valtozo.go
package main import "fmt" func main() { var a = 35 fmt.Println(a) }
Valós számok
var num1 float32 = 3.14 var num2 float64 = 2.71828
Formázott kimenet
- forma.go
package main import "fmt" func main() { var a = 35 fmt.Printf("%d\n", a) }
Matematikai könyvtárak
- matek.go
package main import ( "fmt" "math" ) func main() { var a = -9.0 fmt.Println(math.Abs(a)) }
Véletlen szám
- rand.go
package main import ( "fmt" "math/rand" "time" ) func main() { rand.Seed(time.Now().UnixNano()) var a = rand.Intn(10-1) + 1 fmt.Println(a) }
Operátorok
- opera.go
package main func main() { var a = 30 var b = 35 var res1 = a + b var res2 = a - b var res3 = a * b var res4 = a / b println(res1, res2, res3, res4) }
Konvertálás
Szöveg számmá:
package main import ( "fmt" "reflect" "strconv" ) func main() { var szoveg = "45" var szam, err = strconv.Atoi(szoveg) if err != nil { fmt.Println(err) } else { fmt.Println(reflect.TypeOf(szam)) } }
Bekérés
- beker.go
package main import ( "fmt" ) func main() { var nev string fmt.Print("Add meg a neved: ") fmt.Scanln(&nev) fmt.Println("Helló ", nev) }
go run beker.go
Szám bekérése:
- beker.go
package main import ( "fmt" ) func main() { var num int fmt.Print("Add meg az életkorod: ") fmt.Scanln(&num) fmt.Println("Helló ", num, " éves") }
Szelekció
A if utasítás használható szelekcióra. A if kulcsszó után zárójelek nélkül leírjuk a feltételt. A blokkot a kapcsos zárójelek „{}” határozzák meg.
- szel.go
package main import ( "fmt" ) func main() { var num int fmt.Print("Írj be egy számot: ") fmt.Scanln(&num) if num > 0 { fmt.Println("A szám pozitív.") } else if num < 0 { fmt.Println("A szám negatív.") } else { fmt.Println("A szám nulla.") } }
A switch:
- szel.go
package main import ( "fmt" ) func main() { var num int fmt.Print("Írj be egy számot: ") fmt.Scanln(&num) switch num { case 0: fmt.Println("Nulla") case 1: fmt.Println("Egy") case 2: fmt.Println("Kettő") default: fmt.Println("Imseretlen") } }
Iteráció
A Go nyelvben egyetlen ciklus utasítás van, de az használható több módon is.
Számláló típusú ciklus:
- ite.go
package main import ( "fmt" ) func main() { for i := 0; i < 10; i++ { fmt.Println(i) } }
A for csak feltétellel, azaz amíg típusú ciklus:
- ite.go
package main import ( "fmt" ) func main() { i := 0 for i < 10 { fmt.Println(i) i++ } }
Végtelen ciklus megszakítva:
- cik.go
func main() { i := 0 for { if i > 5 { break } fmt.Println(i) i++ } }
A range ciklus:
- cik.go
package main import ( "fmt" ) func main() { nums := []int{1, 2, 3, 4, 5} for index, value := range nums { fmt.Println(index, value) } }
Függvények
A függvényeket a func kulcsszóval vezetjük be. Sorrendjük mindegy. Ha visszatérési értéket is megadunk a return utasítást kell használnunk.
- fug.go
package main import ( "fmt" ) func main() { about() } func about() { fmt.Println("Para Irén") fmt.Println("Szeged") }
- fugpa.go
package main import ( "fmt" ) func main() { calcDouble(10) } func calcDouble(num int) { fmt.Println(num * 2) }
Visszaadott érték:
- vissza.go
package main import ( "fmt" ) func main() { var sum = calcSum(1, 2) fmt.Println(sum) } func calcSum(num1 int, num2 int) int { return num1 + num2 }
Karakterláncok
- kar.go
package main import ( "fmt" ) func main() { var szoveg string = ` Aranyszabály köztudott ` fmt.Println(szoveg) }
Hossz
Hány bájt hosszú:
word := "árvíztűrő" fmt.Println(len(word))
Karakterek száma:
- karakterek.go
package main import ( "fmt" "unicode/utf8" ) func main() { word := "árvíztűrő" fmt.Println(utf8.RuneCountInString(word)) }
Tömbök
- tomb.go
package main import ( "fmt" ) func main() { var numbers [4]int numbers[0] = 35 numbers[1] = 45 numbers[2] = 55 numbers[3] = 65 fmt.Println(numbers[0]) }
Tömb kezdőértékkel:
- tomb2.go
package main import ( "fmt" ) func main() { numbers := [4]int{35, 45, 55, 65} fmt.Println(numbers[0]) }
Valós számok
numbers := [4]float32{3.7, 3.5, 3.4, 3.6} fmt.Println(numbers)
Méret
numbers := [4]int{35, 45, 55, 65} fmt.Println(len(numbers))
Fájlkezelés
- hozzafuzes.go
package main import ( "fmt" "os" ) func main() { fp, err := os.OpenFile("beker.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { fmt.Println(err) return } defer fp.Close() fmt.Fprintln(fp, "alma") }
A defer utasítás hatására a bezárás csak akkor hajtódik végre, ha függvény végrehajtása a végére ért.
Beolvasás:
- beolvas.go
package main import ( "fmt" "os" ) func main() { data, err := os.ReadFile("beker.txt") if err != nil { fmt.Println(err) return } fmt.Println(string(data)) }
Beolvasás soronkénti bejárással
- beolvasbejar.go
package main import ( "fmt" "os" "bufio" ) func main() { file, err := os.Open("beker.txt") if err != nil { fmt.Println(err) return } defer file.Close() scanner := bufio.NewScanner(file) for scanner.Scan() { fmt.Println(scanner.Text()) } if err := scanner.Err(); err != nil { fmt.Println(err) } }