GoDasturchi
Your First Struct

Your First Struct

Birinchi struct'ingiz

example.go
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.org

Structlar 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.

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

Hints (0/3)

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

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Your First Struct

Birinchi struct'ingiz

example.go
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.org

Structlar 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.

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

Hints (0/3)

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