Cet article expliquera comment utiliser le langage Go pour mettre en œuvre un système de commande simple et facile à comprendre.
1. Analyse de la demande
Nous avons besoin d'un système de commande simple et facile à comprendre, qui doit mettre en œuvre au moins les fonctions suivantes :
Considérant que notre temps et notre énergie sont limités, nous ne mettrons en œuvre qu'un système de centre commercial simple et nous ne proposerons que deux produits parmi lesquels choisir. Les informations de ces deux produits sont les suivantes :
Nom du produit | Prix du produit |
---|---|
Produit 1 | 10 yuans |
Produit 2 | 20 yuans |
Nous avons besoin utiliser la commande Mettre en œuvre ce système de centre commercial dans l'industrie.
2. Implémentation du code
Nous devons d'abord créer une structure pour stocker les informations sur le produit. L'exemple de code est le suivant :
type product struct { name string price int } var products = []product{ {"商品1", 10}, {"商品2", 20}, }
Nous devons implémenter une fonction pour. afficher les informations sur le produit, l'exemple de code est le suivant :
func showProducts() { fmt.Println("== 商品列表 ==") for _, p := range products { fmt.Printf("%s %d元\n", p.name, p.price) } fmt.Println("================") }
Nous devons implémenter une structure de panier pour stocker les informations sur le produit sélectionnées par l'utilisateur, l'exemple de code est le suivant :
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("============") }
Nous devons implémenter une commande. Une seule fonction consiste à générer une commande à partir des informations sur le produit dans le panier. L'exemple de code est le suivant :
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("============") }
Nous devons implémenter. une fonction d'interaction en ligne de commande permettant à l'utilisateur de sélectionner le produit et la quantité et de compléter la commande. Code Un exemple est le suivant :
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. Code complet
Le code complet est le suivant :
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. Résumé
Cet article présente brièvement comment utiliser le langage Go pour mettre en œuvre un système de commande simple et facile à comprendre, en réalisant des fonctions d'affichage des produits et de panier d'achat. Avec des fonctions telles que la génération et l'affichage des commandes, nous avons implémenté un système de centre commercial utile et doté d'une certaine praticité. et valeur de référence. Avant le développement, nous devons bien comprendre les besoins et les objectifs afin de pouvoir mieux mener à bien le développement du produit. Dans le même temps, l'efficacité et la simplicité du langage Go nous fournissent également des outils et un support de développement fiables et efficaces.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!