Projeye Genel Bakış
Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 45 / 68.
Görev
KolayÜrün stok seviyelerini yönetmenize yardımcı olacak basit bir envanter denetleyicisi oluşturmak üzeresiniz.
Temel veri yapılarını oluşturarak ve başlangıç envanter verilerini görüntüleyerek envanter yönetim sisteminizin temelini oluşturun. Bu görev, proje boyunca kullanılacak Product struct'ını ve envanter map'ini oluşturur.
İki girdi alacaksınız:
- Şu formatta mağaza bilgilerini içeren bir dize:
"store_name,location"(örneğin,"TechStore,Downtown") - Şu formatta başlangıç ürün verilerini içeren bir dize:
"product1:price1:quantity1,product2:price2:quantity2,product3:price3:quantity3"(örneğin,"Laptop:999.99:5,Mouse:25.50:15,Keyboard:75.00:8")
Göreviniz:
- İki alana sahip bir
Productstruct'ı oluşturun:Price(float64) - ürünün fiyatıQuantity(int) - mevcut stok miktarı
- Mağaza adını ve konumunu elde etmek için ilk girdiyi virgüllere göre ayırarak ayrıştırın
- Tek tek ürün girdilerini elde etmek için ikinci girdiyi virgüllere göre ayırarak ayrıştırın
- Her ürün girdisi için ürün adını, fiyatı ve miktarı elde etmek üzere iki nokta üst üste işaretlerine göre ayırın
- Fiyat dizesini float64'e, miktar dizesini int'e dönüştürün
- Anahtarları ürün adları (string), değerleri ise
inventorystruct'ları olanProductadlı bir map oluşturun - Ayrıştırılan ürün verileriyle inventory map'ini doldurun
- Mağaza bilgilerini görüntüleyin:
"=== [store_name] Inventory System ===""Location: [location]""Inventory initialized with [number_of_products] products"
- Mevcut envanteri ürün adına göre alfabetik sırada görüntüleyin:
"Current Inventory:"- Her ürün için:
"- [product_name]: $[price] (Stock: [quantity])"
- Envanter istatistiklerini hesaplayıp görüntüleyin:
"Inventory Statistics:""Total Products: [total_number_of_products]""Total Items in Stock: [sum_of_all_quantities]""Total Inventory Value: $[sum_of_price_times_quantity_for_all_products]"
- Sistem durumunu görüntüleyin:
"System Status: Ready""Inventory management system initialized successfully"
Girdi dizelerini ayırmak için strings paketini, dizeleri sayılara dönüştürmek için strconv paketini, biçimlendirilmiş çıktı için fmt paketini ve ürün adlarını alfabetik olarak sıralamak için sort paketini kullanın. Toplam envanter değerini 2 ondalık basamakla biçimlendirin. Bu görev, envanter yönetim projesinin sonraki derslerinde genişletilecek temel veri yapılarının temelini oluşturur.
Kendin dene
package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
"strings"
)
// TODO: Product yapısını (struct) burada tanımlayın
func main() {
// Boşlukları düzgün işlemek için bufio.Scanner kullanarak girdiyi okuyun
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
storeInfo := scanner.Text()
scanner.Scan()
productData := scanner.Text()
// TODO: Kodunuzu aşağıya yazın
// 1. Mağaza bilgilerini ayrıştırın (virgülle ayırın, uzunluğu kontrol edin)
// 2. Ürün verilerini ayrıştırın (virgülle ayırın, ardından her ürün için iki nokta üst üste ile ayırın)
// 3. Envanter haritası (map) oluşturun
// 4. Dizeleri uygun türlere dönüştürün ve envanteri doldurun
// 5. Mağaza bilgilerini görüntüleyin
// 6. Mevcut envanteri görüntüleyin (alfabetik olarak sıralanmış)
// 7. Envanter istatistiklerini hesaplayın ve görüntüleyin
// 8. Sistem durumunu görüntüleyin
}Mantık ve Akış bölümündeki tüm dersler
1İleri Seviye Kontrol Akışı
`fallthrough` ile Switchİç İçe Döngülerden ÇıkmaBelirli Bir Döngüye Devam Etme`goto` İfadesiÖzet - İleri Seviye Döngü Kontrolü4Proje: Basit Görev Listesi
Proje KurulumuGörev Ekleme2Structlar ve Metotlar
Structlarda Metot TanımlamaValue Receiver'larPointer Receiver'larReceiver SeçimiMetotlar ve FonksiyonlarÖzet - Struct Davranışı5Derinlemesine Map'ler
Struct Map'leriMap Değeri Olarak Pointer'larNil Map KontrolüMap'leri KarşılaştırmaÖzet - Kelime Frekansı Sayacı8Proje: Basit Envanter
Projeye Genel BakışStok Kontrolü3Arayüzler (Temeller)
Arayüz Nedir?Bir Arayüz TanımlamaBir Arayüzü UygulamaArayüz Tiplerini KullanmaBoş ArayüzTip OnaylamalarıTip SeçimiÖzet - Şekiller ve DavranışlarKendi başına pratik yap: Online Go derleyicisi