GoDasturchi
Project Setup

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.

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

Hints (0/3)

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

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

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.

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

Hints (0/3)

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