In diesem Artikel erfahren Sie, wie Sie mithilfe der Go-Sprache ein einfaches und leicht verständliches Bestellsystem implementieren.
1. Bedarfsanalyse
Wir benötigen ein einfaches und leicht verständliches Bestellsystem, das mindestens folgende Funktionen umsetzen muss:
Da unsere Zeit und Energie begrenzt sind, werden wir nur ein einfaches Mall-System implementieren und nur zwei Produkte zur Auswahl anbieten. Die Informationen zu diesen beiden Produkten lauten wie folgt:
Produktname | Produktpreis |
---|---|
Produkt 1 | 10 Yuan |
Produkt 2 | 20 Yuan |
Wir brauchen Um den Befehl zu verwenden, implementieren Sie dieses Einkaufszentrumsystem in der Branche.
2. Code-Implementierung
Wir müssen zunächst eine Struktur zum Speichern von Produktinformationen erstellen:
type product struct { name string price int } var products = []product{ {"商品1", 10}, {"商品2", 20}, }
Wir müssen eine Funktion implementieren Produktinformationen anzeigen Das Codebeispiel lautet wie folgt:
func showProducts() { fmt.Println("== 商品列表 ==") for _, p := range products { fmt.Printf("%s %d元\n", p.name, p.price) } fmt.Println("================") }
Wir müssen eine Warenkorbstruktur implementieren, um die vom Benutzer ausgewählten Produktinformationen zu speichern. Das Codebeispiel lautet wie folgt:
type cart struct { items map[string]int } func newCart() *cart { return &cart{items: make(map[string]int)} } func (c *cart) addItem(name string, qty int) { c.items[name] += qty } func (c *cart) clear() { c.items = make(map[string]int) } func (c *cart) total() int { total := 0 for name, qty := range c.items { for _, p := range products { if p.name == name { total += p.price * qty break } } } return total } func (c *cart) show() { if len(c.items) == 0 { fmt.Println("购物车为空") return } fmt.Println("== 购物车 ==") for name, qty := range c.items { fmt.Printf("%s × %d\n", name, qty) } fmt.Printf("总计 %d元\n", c.total()) fmt.Println("============") }
Wir müssen eine Bestellung implementieren. Eine einzelne Funktion besteht darin, eine Bestellung aus den Produktinformationen im Warenkorb zu generieren. Das Codebeispiel lautet wie folgt:
func checkout(c *cart) { if len(c.items) == 0 { fmt.Println("购物车为空") return } // 生成订单 order := make(map[string]int) for name, qty := range c.items { order[name] = qty } // 清空购物车 c.clear() fmt.Println("== 订单详情 ==") for name, qty := range order { for _, p := range products { if p.name == name { fmt.Printf("%s × %d\n", name, qty) fmt.Printf("单价 %d元,总价 %d元\n", p.price, p.price*qty) break } } } fmt.Printf("总计 %d元\n", c.total()) fmt.Println("============") }
Wir müssen implementieren Eine Befehlszeilen-Interaktionsfunktion, mit der der Benutzer das Produkt und die Menge auswählen und die Bestellung abschließen kann. Ein Beispiel lautet wie folgt:
func interactive() { scanner := bufio.NewScanner(os.Stdin) c := newCart() for { showProducts() c.show() fmt.Print("请选择商品(输入商品编号):") scanner.Scan() id := scanner.Text() if id == "q" { break } var p product for _, p = range products { if p.name == id { break } } if p.price == 0 { fmt.Printf("商品 %s 不存在\n", id) continue } fmt.Print("请输入数量:") scanner.Scan() qtyStr := scanner.Text() qty, err := strconv.Atoi(qtyStr) if err != nil { fmt.Println("输入的数量无效") continue } c.addItem(p.name, qty) } checkout(c) }
3. Vollständiger Code
Der vollständige Code lautet wie folgt:
package main import ( "bufio" "fmt" "os" "strconv" ) type product struct { name string price int } var products = []product{ {"商品1", 10}, {"商品2", 20}, } type cart struct { items map[string]int } func newCart() *cart { return &cart{items: make(map[string]int)} } func (c *cart) addItem(name string, qty int) { c.items[name] += qty } func (c *cart) clear() { c.items = make(map[string]int) } func (c *cart) total() int { total := 0 for name, qty := range c.items { for _, p := range products { if p.name == name { total += p.price * qty break } } } return total } func (c *cart) show() { if len(c.items) == 0 { fmt.Println("购物车为空") return } fmt.Println("== 购物车 ==") for name, qty := range c.items { fmt.Printf("%s × %d\n", name, qty) } fmt.Printf("总计 %d元\n", c.total()) fmt.Println("============") } func showProducts() { fmt.Println("== 商品列表 ==") for _, p := range products { fmt.Printf("%s %d元\n", p.name, p.price) } fmt.Println("================") } func checkout(c *cart) { if len(c.items) == 0 { fmt.Println("购物车为空") return } // 生成订单 order := make(map[string]int) for name, qty := range c.items { order[name] = qty } // 清空购物车 c.clear() fmt.Println("== 订单详情 ==") for name, qty := range order { for _, p := range products { if p.name == name { fmt.Printf("%s × %d\n", name, qty) fmt.Printf("单价 %d元,总价 %d元\n", p.price, p.price*qty) break } } } fmt.Printf("总计 %d元\n", c.total()) fmt.Println("============") } func interactive() { scanner := bufio.NewScanner(os.Stdin) c := newCart() for { showProducts() c.show() fmt.Print("请选择商品(输入商品编号):") scanner.Scan() id := scanner.Text() if id == "q" { break } var p product for _, p = range products { if p.name == id { break } } if p.price == 0 { fmt.Printf("商品 %s 不存在\n", id) continue } fmt.Print("请输入数量:") scanner.Scan() qtyStr := scanner.Text() qty, err := strconv.Atoi(qtyStr) if err != nil { fmt.Println("输入的数量无效") continue } c.addItem(p.name, qty) } checkout(c) } func main() { interactive() }
4. Zusammenfassung
In diesem Artikel wird kurz vorgestellt, wie Sie mit der Go-Sprache ein einfaches und leicht verständliches Bestellsystem implementieren, indem wir Produktanzeige- und Warenkorbfunktionen realisieren. Mit Funktionen wie Bestellgenerierung und -anzeige haben wir ein nützliches Mall-System mit gewisser Praktikabilität implementiert und Referenzwert. Vor der Entwicklung müssen wir die Bedürfnisse und Ziele vollständig verstehen, damit wir die Produktentwicklung besser abschließen können. Gleichzeitig bietet uns die Effizienz und Einfachheit der Go-Sprache auch zuverlässige und effiziente Entwicklungstools und Unterstützung.
Das obige ist der detaillierte Inhalt vonSo implementieren Sie ein Bestellsystem mithilfe der Go-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!