[[: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) }