Structuri în Go
Un struct (prescurtare de la structură) combină mai mulți membri, care pot avea tipuri de date diferite, într-o singură variabilă.
Și un array păstrează mai multe valori într-o singură variabilă, dar toate trebuie să aibă același tip de date. O structură nu are această restricție.
De aceea, structurile sunt utile pentru a păstra împreună date înrudite, sub formă de înregistrări.
Declararea unui Struct
Pentru a declara o structură în Go ai nevoie de două cuvinte cheie: type și struct.
Sfat: Membrii lui Person nu au toți același tip. name și job sunt șiruri de caractere, în timp ce age și salary sunt numere întregi.
Sintaxa Struct
type struct_name struct {
member1 datatype;
member2 datatype;
member3 datatype;
...
}
Declarația unui Struct
type Person struct {
name string
age int
job string
salary int
}
Accesarea membrilor unui Struct
Pentru a ajunge la un membru al unei structuri, scrie numele variabilei de tip structură, apoi operatorul punct (.), apoi numele membrului. Aici este folosit atât pentru a seta, cât și pentru a citi membrii a două variabile.
Exemplu
Ieșire: Program Go și ieșirea capturată
package main
import ("fmt")
type Person struct {
name string
age int
job string
salary int
}
func main() {
var pers1 Person
var pers2 Person
pers1.name = "Hege"
pers1.age = 45
pers1.job = "Profesor"
pers1.salary = 6000
pers2.name = "Cecilie"
pers2.age = 24
pers2.job = "Marketing"
pers2.salary = 4500
fmt.Println("Nume: ", pers1.name)
fmt.Println("Vârstă: ", pers1.age)
fmt.Println("Meserie: ", pers1.job)
fmt.Println("Salariu: ", pers1.salary)
fmt.Println("Nume: ", pers2.name)
fmt.Println("Vârstă: ", pers2.age)
fmt.Println("Meserie: ", pers2.job)
fmt.Println("Salariu: ", pers2.salary)
}
Transmiterea unui Struct ca argument de funcție
O structură poate fi transmisă și unei funcții ca argument. Aici printPerson() primește un Person și îi afișează membrii, așa că codul de afișare nu trebuie repetat.
Exemplu
Ieșire: Program Go și ieșirea capturată
package main
import ("fmt")
type Person struct {
name string
age int
job string
salary int
}
func printPerson(pers Person) {
fmt.Println("Nume: ", pers.name)
fmt.Println("Vârstă: ", pers.age)
fmt.Println("Meserie: ", pers.job)
fmt.Println("Salariu: ", pers.salary)
}
func main() {
var pers1 Person
var pers2 Person
pers1.name = "Hege"
pers1.age = 45
pers1.job = "Profesor"
pers1.salary = 6000
pers2.name = "Cecilie"
pers2.age = 24
pers2.job = "Marketing"
pers2.salary = 4500
printPerson(pers1)
printPerson(pers2)
}