Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:go:oesszetett_tipusok

< Go

A Go nyelv összetett típusai

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

struktura.go
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

method.go
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

egymasba.go
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

interface.go
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

intpara.go
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)
}
oktatas/programozas/go/oesszetett_tipusok.txt · Utolsó módosítás: 2025/01/13 12:55 szerkesztette: admin