Project Setup
Loyihani sozlash
Har qanday bino qurishdan oldin, avval uning "asosiy g'ishtlari" nima ekanligini aniqlash kerak. Bizning URL Shortener uchun eng kichik, eng asosiy "g'isht" — bitta qisqartirilgan havolani ifodalovchi ma'lumot tuzilmasi.
package main
import (
"fmt"
"time"
)
// URLRecord — bitta qisqartirilgan havola haqidagi barcha ma'lumot
type URLRecord struct {
Code string
OriginalURL string
CreatedAt time.Time
Clicks int
}
func NewURLRecord(code, originalURL string) *URLRecord {
return &URLRecord{
Code: code,
OriginalURL: originalURL,
CreatedAt: time.Now(),
Clicks: 0,
}
}
func main() {
record := NewURLRecord("aB3xZ", "https://godasturchi.uz")
fmt.Println(record.Code, record.OriginalURL, record.Clicks)
}URLRecord — "Struct Fundamentals" darsida ko'rgan oddiy struct, lekin endi u BUTUN loyihaning markazidagi ma'lumot birligi bo'ladi. NewURLRecord — "constructor funksiya" naqshi ("Constructor Functions" darsini eslang): u yangi record'ni to'g'ri boshlang'ich qiymatlar bilan (jumladan CreatedAt — hozirgi vaqt, Clicks — nol) yaratishni KAFOLATLAYDI, chaqiruvchi kod bu tafsilotlar haqida qayg'urmaydi.
Clicks int maydonini hozircha nolga tenglashtiramiz — buni keyingi darslarda, "Click Analytics"da to'ldiramiz. Bu — loyihani BOSQICHMA-BOSQICH qurishning odatiy usuli: avval kerakli MAYDONLARNI belgilab qo'yamiz, keyin ularni ishlatuvchi MANTIQNI qo'shamiz.
>_ Exercise
URLRecord'ga yangilanish vaqtini kuzatish imkonini qo'shing.
- •URLRecord struct'iga LastAccessedAt time.Time maydonini qo'shing
- •RecordAccess() metodi yozing: LastAccessedAt'ni time.Now() bilan yangilasin va Clicks'ni 1 taga oshirsin
- •record yaratib, RecordAccess() ni chaqiring, so'ng Clicks qiymatini chop eting
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
Loyihani struct'ning eng asosiy maydonlaridan boshlab, bosqichma-bosqich kerakli mantiq bilan boyitib borish — real dasturlarni qurishning odatiy, ishonchli usuli.
NEXT UP
URL Model & Storage
$ go run main.go
Kodingizni ishga tushiring