Your First Struct
Birinchi struct'ingiz
type User struct {
Name string
Email string
Admin bool
}
u := User{Name: "Linus Torvalds", Email: "torvalds@linux-foundation.org", Admin: true}
fmt.Println(u.Email) // torvalds@linux-foundation.orgStructlar bog'liq maydonlarni bitta turga guruhlaydi. Har bir maydonning nomi va turi bor. Ularga nuqta yozuvi (dot notation) orqali murojaat qilasiz.
Agar bir xil uch-to'rt o'zgaruvchini funksiyalar orasida birga uzatayotganingizni sezsangiz, bu ularning struct bo'lishi kerakligining belgisi. name, email, va adminni alohida uzatish o'rniga, bitta User uzatasiz.
type User struct { ... } bilan turni aniqlagandan so'ng, uning qiymatlarini User{ ... } bilan yaratasiz. Tashlab ketilgan maydonlar o'zining nol qiymatini oladi.
guest := User{Name: "Linus Torvalds"} // Email: "", Admin: false
empty := User{} // barcha nol qiymatlar>_ Exercise
Host string, Port int, Live bool maydonlariga ega Server struct'ini aniqlang.
Summary(s Server) string yozing, u "Host:Port (status)" qaytaradi, bunda status Live true bo'lsa "up", false bo'lsa "down". fmt.Sprintf da butun sonlar uchun %d, satrlar uchun %s dan foydalaning.
Misollar:
- •
Summary(Server{Host: "api.example.com", Port: 8080, Live: true})"api.example.com:8080 (up)"qaytaradi - •
Summary(Server{Host: "localhost", Port: 3000, Live: false})"localhost:3000 (down)"qaytaradi
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
Qiymatlar bir-biriga tegishli bo'lganda structlardan foydalaning. Maydonlarga nuqta yozuvi bilan murojaat qiling. Tashlab ketilgan maydonlar o'zining nol qiymatidan boshlanadi.
NEXT UP
Building Structs
$ go run main.go
Kodingizni ishga tushiring