Golang'da yapı veya struct, farklı tiplerdeki bir grup elemanı tek bir birim halinde oluşturmamızı sağlayan kullanıcı tanımlı bir türdür. Belirli bir özellik veya alan kümesine sahip herhangi bir gerçek dünya varlığı bir yapı olarak temsil edilebilir.

Golang'da iç içe yapılar nasıl kullanılır
Go dili iç içe yapılara izin verir. Başka bir yapının alanı olan yapıya İç İçe Yapı denir. Başka bir deyişle, bir yapının içerisinde başka bir yapının yer almasına İç İçe Yapı denir. Sözdizimi:
type struct_name_1 struct{
// Các trường
}
type struct_name_2 struct{
variable_name struct_name_1
}
Golang'daki iç içe yapıyı anlamak için aşağıdaki örneği ele alalım:
Örnek 1:
// Chương trình Go minh hoạc
// cấu trúc lồng nhau
package main
import "fmt"
// Tạo cấu trúc
type Author struct {
name string
branch string
year int
}
// Tạo cấu trúc lòng nhau
type HR struct {
// cấu trúc là một trường
details Author
}
func main() {
// Khởi tạo các trường
// của cấu trúc
result := HR{
details: Author{"Sona", "ECE", 2013},
}
// Hiện giá trị
fmt.Println("\nDetails of Author")
fmt.Println(result)
}
Sonuç:
Details of Author
{{Sona ECE 2013}}
Örnek 2:
// Chương trình Golang minh họa
// cấu trúc lồng nhau
package main
import "fmt"
// Tạo cấu trúc
type Student struct {
name string
branch string
year int
}
// Tạo cấu trúc lồng nhau
type Teacher struct {
name string
subject string
exp int
details Student
}
func main() {
// Khởi tạo các trường
// của cấu trúc
result := Teacher{
name: "Suman",
subject: "Java",
exp: 5,
details: Student{"Bongo", "CSE", 2},
}
// Hiện giá trị
fmt.Println("Details of the Teacher")
fmt.Println("Teacher's name: ", result.name)
fmt.Println("Subject: ", result.subject)
fmt.Println("Experience: ", result.exp)
fmt.Println("\nDetails of Student")
fmt.Println("Student's name: ", result.details.name)
fmt.Println("Student's branch name: ", result.details.branch)
fmt.Println("Year: ", result.details.year)
}
Sonuç:
Details of the Teacher
Teacher's name: Suman
Subject: Java
Experience: 5
Details of Student
Student's name: Bongo
Student's branch name: CSE
Year: 2
Örnek 3:
Go'da bir yapının, iç içe yapılar adı verilen, kendileri yapı olan alanları olabilir. İç içe geçmiş bir yapıya sahip bir yapının örneği aşağıdadır:
package main
import (
"fmt"
)
type Address struct {
Street string
City string
State string
PostalCode string
}
type Person struct {
FirstName string
LastName string
Age int
Address Address
}
func main() {
p := Person{
FirstName: "John",
LastName: "Doe",
Age: 30,
Address: Address{
Street: "123 Main St",
City: "Anytown",
State: "CA",
PostalCode: "12345",
},
}
fmt.Println(p.FirstName, p.LastName)
fmt.Println("Age:", p.Age)
fmt.Println("Address:")
fmt.Println("Street:", p.Address.Street)
fmt.Println("City:", p.Address.City)
fmt.Println("State:", p.Address.State)
fmt.Println("Postal Code:", p.Address.PostalCode)
}
Sonuç:
John Doe
Age: 30
Address:
Street: 123 Main St
City: Anytown
State: CA
Postal Code: 12345
Burada iki yapı türü tanımlıyoruz: Kişi ve Adres. Kişinin Adres adında iç içe geçmiş bir yapı alanı vardır. Ana fonksiyonda, Adres alanı olan yeni bir Kişi örneği oluşturuyoruz. Daha sonra, iç içe geçmiş alanlara erişmek için nokta gösterimini kullanarak Kişi ve Adres yapılarının çeşitli alan değerlerini yazdırıyoruz.