[[:oktatas:programozás:go|< Go]]
====== A Go nyelv összetett típusai ======
* **Szerző:** Sallai András
* Copyright (c) 2025, Sallai András
* Szerkesztve: 2025
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== Bevezetés =====
A Go nyelv nem klasszikus értelemben vett
objektum-orientált nyelv, de használhatunk
benne struktúrákat, beágyazásokat, és
interfészeket. Ezek lehetővé teszik az
objektum-orientált programozás néhány
jellemzőjének használatát.
===== Struktúra =====
package main
import (
"fmt"
)
type Employee struct {
Name string
City string
Salary float32
}
func main() {
emp := Employee{
Name: "Beker",
City: "Budapest",
Salary: 1000,
}
fmt.Println(emp.Name, emp.City, emp.Salary)
}
===== Metódus struktúrával =====
package main
import (
"fmt"
)
type Employee struct {
Name string
City string
Salary float32
}
func (e Employee) print() {
fmt.Println(e.Name, e.City, e.Salary)
}
func main() {
emp := Employee{
Name: "Beker",
City: "Budapest",
Salary: 1000,
}
emp.print()
}
===== Struktúrák egymásbaágyazása =====
package main
import (
"fmt"
)
type Address struct {
City string
Street string
}
type Employee struct {
Name string
Address
Salary float32
}
func (e Employee) print() {
fmt.Println(e.Name, Address{e.City, e.Street}, e.Salary)
}
func main() {
emp := Employee{
Name: "Erős Istávn",
Address: Address{"Szeged", "Kék utca"},
Salary: 395,
}
emp.print()
}
===== Interfész =====
package main
import (
"fmt"
)
type Person interface {
Rest()
}
type Employee struct{}
func (e Employee) Rest() {
fmt.Println("Pihenés...")
}
func main() {
emp := Employee{}
emp.Rest()
}
===== Interfész paraméterként =====
package main
import (
"fmt"
)
type Person interface {
Rest()
}
type Employee struct{}
func (e Employee) Rest() {
fmt.Println("Pihenés...")
}
/*
Egy fügvény ami bármilyen Struktúrát elfogad
ami implementálja a Person interfészt
*/
func Resting(p Person) {
p.Rest()
}
func main() {
emp := Employee{}
Resting(emp)
}