Rumah > Artikel > pembangunan bahagian belakang > Cara melaksanakan sistem pesanan menggunakan bahasa Go
Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk melaksanakan sistem pesanan yang ringkas dan mudah difahami.
1. Analisis permintaan
Kami memerlukan sistem pesanan yang ringkas dan mudah difahami, yang sekurang-kurangnya perlu melaksanakan fungsi berikut:
Memandangkan masa dan tenaga kami terhad, kami hanya akan melaksanakan sistem pusat membeli-belah yang mudah , dan kami Hanya dua item tersedia untuk dipilih. Maklumat kedua-dua produk ini adalah seperti berikut:
商品名称 | 商品价格 |
---|---|
商品1 | 10元 |
商品2 | 20元 |
Kita perlu melaksanakan sistem pusat membeli-belah ini dalam baris arahan.
2. Pelaksanaan kod
Kita perlu membuat struktur untuk menyimpan maklumat produk Contoh kod adalah seperti berikut :
type product struct { name string price int } var products = []product{ {"商品1", 10}, {"商品2", 20}, }
Kita perlu melaksanakan fungsi untuk memaparkan maklumat produk Contoh kod adalah seperti berikut:
func showProducts() { fmt.Println("== 商品列表 ==") for _, p := range products { fmt.Printf("%s %d元\n", p.name, p.price) } fmt.Println("================") }
Kami perlu melaksanakan struktur troli beli-belah untuk menyimpan maklumat produk yang dipilih oleh pengguna Contoh kod adalah seperti berikut:
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("============") }
Kita perlu melaksanakan fungsi pesanan, yang menjana maklumat produk dalam troli beli-belah ke dalam pesanan Contoh kod adalah seperti berikut:
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("============") }
Kami perlu melaksanakan fungsi interaktif baris arahan untuk pengguna memilih produk dan kuantiti, dan melengkapkan pesanan adalah seperti berikut:
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. Kod lengkap
Kod lengkap adalah seperti berikut:
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 Ringkasan
Artikel ini memperkenalkan secara ringkas cara menggunakan bahasa Go untuk melaksanakan yang mudah. dan sistem pesanan yang mudah difahami Dengan melaksanakan fungsi seperti paparan produk, fungsi troli beli-belah, dan penjanaan dan paparan pesanan, Kami telah melaksanakan sistem pusat membeli-belah yang berguna dengan nilai praktikal dan rujukan tertentu. Sebelum pembangunan, kita perlu memahami sepenuhnya keperluan dan matlamat supaya kita dapat menyelesaikan pembangunan produk dengan lebih baik Pada masa yang sama, kecekapan dan kesederhanaan bahasa Go juga menyediakan alat dan sokongan pembangunan yang boleh dipercayai dan cekap.
Atas ialah kandungan terperinci Cara melaksanakan sistem pesanan menggunakan bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!