Avoid Package Stutter
Paket takrorlanishidan saqlaning
"Package Naming" darsida qisqacha ko'rgan "stutter" (takrorlanish) muammosini endi amaliy misolda mustahkamlaymiz: paket nomini ichidagi tur, funksiya yoki konstanta nomlarida takrorlamang.
package main
import "fmt"
// Xayoliy "payment" paketi ichida bo'lganda:
// payment.PaymentGateway — YOMON (takrorlanish: "payment" ikki marta)
// payment.Gateway — YAXSHI
// payment.NewPaymentGateway() — YOMON
// payment.NewGateway() — YAXSHI
type Gateway struct {
Provider string
}
func NewGateway(provider string) Gateway {
return Gateway{Provider: provider}
}
func main() {
g := NewGateway("Stripe")
fmt.Println(g.Provider)
}Chaqiruv joyida qanday ko'rinishini tasavvur qiling: payment.NewGateway("Stripe") — tabiiy o'qiladi. payment.NewPaymentGateway("Stripe") esa "payment" so'zini ikki marta takrorlaydi, chunki paket nomi allaqachon import qilingan joyda ko'rinib turibdi. Bu qoida funksiya, konstanta va o'zgaruvchi nomlariga ham tegishli — barchasi paket nomini emas, paket nomidan keyingi qismni aytishi kerak.
>_ Exercise
Takrorlanishni bartaraf eting (xayoliy "user" paketi ichida).
- •UserAccount struct'ini Account deb qayta nomlang
- •NewUserAccount funksiyasini NewAccount deb qayta nomlang
- •Account'ni yaratib, uning Email maydonini chop eting
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
Paket ichidagi nomlar paket nomini takrorlamasligi kerak — chaqiruv joyida (paket.Nom) paket nomi allaqachon mavjud.
NEXT UP
Use internal/ for Private Code
$ go run main.go
Kodingizni ishga tushiring