Skip to Content
Tuzilmalar va InterfeyslarStructlar

Structlar

struct — bu bir nechta maydonni (field) bitta nom ostida birlashtiradigan tuzilma. Bitta obyektni tasvirlash uchun bir nechta o’zgaruvchi kerak bo’lsa, ularni alohida-alohida saqlash o’rniga bitta structga yig’ib qo’yamiz.

Quyidagi misolda struct e’loni, literal, maydonga murojaat, zero value va ichma-ich (nested) struct — hammasi bir joyda:

struct.go
package main import "fmt" type Address struct { City string Street string } type User struct { Name string Age int Address Address // nested struct } func main() { u := User{ Name: "Aziz", Age: 25, Address: Address{City: "Toshkent", Street: "Amir Temur 12"}, } u.Age = 26 // maydonni o'zgartirish fmt.Println(u.Name, u.Age, u.Address.City) var empty User // zero value fmt.Printf("%+v\n", empty) }
$ go run struct.go Aziz 26 Toshkent {Name: Age:0 Address:{City: Street:}}

Xulosa: maydonlarga nuqta orqali murojaat qilamiz, boshlang’ich qiymat bermasak har biri o’zining zero value’sini oladi ("", 0, false).

Agar hamma maydonlari solishtirsa bo’ladigan turlarda bo’lsa, ikki structni == bilan tenglashtirish mumkin; nomi kerak bo’lmaydigan, bir martalik struct uchun esa anonim struct ishlatamiz:

compare.go
package main import "fmt" type Point struct{ X, Y int } func main() { a := Point{1, 2} b := Point{1, 2} fmt.Println(a == b) // barcha maydonlar teng tmp := struct{ Lat, Lng float64 }{41.31, 69.24} // anonim struct fmt.Println(tmp.Lat, tmp.Lng) }
$ go run compare.go true 41.31 69.24

Xulosa: ichida slice, map yoki funksiya maydoni bor struct’ni == bilan solishtirib bo’lmaydi.

Manba / batafsil: Go spec — Struct types 

Last updated on