• go语言的条件语句和循环语句


    一,条件语句

        常见的就是if语句:

            单支条件语句:

          if   条件 :执行语句   (注,如果是没有逻辑运算符连接的话,是可以不需要括号的,也可以加上括号,如:if (条件):执行语句)

           双支条件语句:一半就只有if和else

      多支条件语句:在if和else之间还有else if 语句

       

    if 语句 if 语句 由一个布尔表达式后紧跟一个或多个语句组成。
    if...else 语句 if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。
    if 嵌套语句 你可以在 if 或 else if 语句中嵌入一个或多个 if 或 else if 语句。
    switch 语句 switch 语句用于基于不同条件执行不同动作。
    select 语句 select 语句类似于 switch 语句,但是select会随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。

    二,循环语句

        

    循环类型描述
    for 循环 重复执行语句块
    循环嵌套 在 for 循环中嵌套一个或多个 for 循环

          循环控制语句

    控制语句描述
    break 语句 经常用于中断当前 for 循环或跳出 switch 语句
    continue 语句 跳过当前循环的剩余语句,然后继续进行下一轮循环。
    goto 语句 将控制转移到被标记的语句。

        无限循环:

    package main
    
    import "fmt"
    
    func main() {
        for true  {
            fmt.Printf("这是无限循环。
    ");
        }
    }  

    三,练习

        1,打印出1到100的所有基数

        2,打印出1到100的所有偶数

        3,打印九九乘法表

    package main
    
    import "fmt"
    
    func main() {
    
    	for num :=1; num<101;num++ {
    		nums:= num % 2
    		//fmt.Print(nums)
    		if (nums == 1) {
    			fmt.Print(num)
    			fmt.Printf("
    ")
    		}
    
    	}
    
    	for num :=1; num<101;num++ {
    		nums:= num % 2
    		//fmt.Print(nums)
    		if (nums == 0) {
    			fmt.Print(num)
    			fmt.Printf("
    ")
    		}
    
    	}
    
    	for num :=1; num<10;num++ {
    		for nums:=num;nums<10;nums++{
    			fmt.Printf("%v x %v = %2v ",num,nums,num*nums)
    		}
    		fmt.Printf("
    ")
    	}
    	fmt.Printf("
    ")
    	fmt.Printf("
    ")
    	for num :=1; num<10;num++ {
    		for nums:=1;nums<num+1;nums++{
    			fmt.Printf("%v x %v = %2v  ",nums,num,num*nums)
    		}
    		fmt.Printf("
    ")
    	}
    	fmt.Printf("
    ")
    	fmt.Printf("
    ")
    	for num :=1; num<10;num++ {
    		for nums:=1;nums<10;nums++{
    			fmt.Printf("%v x %v = %2v  ",nums,num,num*nums)
    		}
    		fmt.Printf("
    ")
    	}
    	fmt.Printf("
    ")
    	fmt.Printf("
    ")
    	for num :=1; num<10;num++ {
    		for new_nums:=1;new_nums<num;new_nums++{
    			fmt.Printf("            ")
    		}
    		for nums:=num;nums<10;nums++{
    			fmt.Printf("%v x %v = %2v  ",num,nums,num*nums)
    		}
    		fmt.Printf("
    ")
    	}
    
    	fmt.Printf("
    ")
    	fmt.Printf("
    ")
    	for num :=1; num<10;num++ {
    		for new_nums:=num+1;new_nums<10;new_nums++{
    			fmt.Printf("            ")
    		}
    		for nums:=1;nums<num+1;nums++{
    			fmt.Printf("%v x %v = %2v  ",nums,num,num*nums)
    		}
    		fmt.Printf("
    ")
    	}
    }

        4,实现简单的购物车

            需求:

    1,创建商品
    2,展示商品
    3,用户可以输入商品序号进行选择商品
    4,没选择一个商品显示一下自己的购物车
    5,计算价钱
    6,删除商品
    7,取消或结账
    
    ===================
    后续补充值卡和充值功能

            代码:

    //注这是一个简版的购物车功能,没有充值卡和充值的功能,后续有空补上
    package main
    
    import (
    	"bufio"
    	"os"
    	"fmt"
    	"strconv"
    	"strings"
    	"math"
    )
    
    type dict struct {
    	shopping_obj map[string]string
    	price_obj    map[string]float32
    }
    
    func shopping()  {
    	//创建商品
    	var dianshiji dict
    	var diannao dict
    	var dianhua dict
    	dianshiji.shopping_obj = map[string]string{
    		"name":"电视机",
    	}
    	dianshiji.price_obj=map[string]float32{
    		"price":22.11,
    	}
    
    	diannao.shopping_obj = map[string]string{
    		"name":"电脑",
    	}
    	diannao.price_obj=map[string]float32{
    		"price":33.11,
    	}
    
    	dianhua.shopping_obj = map[string]string{
    		"name":"电话",
    	}
    	dianhua.price_obj=map[string]float32{
    		"price":44.11,
    	}
    
    	shopping_dict := map[int64]dict{
    		1:dianshiji,
    		2:diannao,
    		3:dianhua,
    	}
    
    	//展示商品
    	fmt.Println("1,",dianshiji.shopping_obj["name"])
    	fmt.Println("2,",diannao.shopping_obj["name"])
    	fmt.Println("3,",dianhua.shopping_obj["name"])
    	//var test *bufio.Reader
    
    	//输入序号,
    	var price float32
    	var shop_list [] string
    	fmt.Println("请输入正确的商品序号:")
    	tag := true
    	for tag {
    		var test= bufio.NewReader(os.Stdin)
    
    		input, err := test.ReadString('
    ')
    		input = strings.Replace(input,"
    ","",-1)
    		_, err_1 := strconv.Atoi(input)
    		fmt.Println(input)
    	    if err == nil{
    	    	if (input == "" || err_1!=nil){
    	    		//特殊操作(删除商品,购买或退出)
    	    		if input == "q"{
    					tag  =false
    				}else if input == "c"{
    					fmt.Println("你已付款",price,"你购买的商品如下:")
    					fmt.Println(shop_list)
    					tag  =false
    				}else if input == "d"{
    					fmt.Println("请输入你要删除的商品的序号,q是退出,c是付款,j继续选择商品:")
    					for true{
    						input, err_3 := test.ReadString('
    ')
    						input = strings.Replace(input,"
    ","",-1)
    						_, err_4 := strconv.Atoi(input)
    						if err_3 == nil{
    							if (input == "" || err_4!=nil){
    								if input == "j"{
    									fmt.Println("请输入商品序号,q是退出,c是付款,d删除商品:")
    									break
    								}else if input == "q"{
    									tag  =false
    									break
    								}else if input == "c"{
    									fmt.Println("你已付款",price,"你购买的商品如下:")
    									fmt.Println(shop_list)
    									tag  =false
    									break
    								}
    							}else{
    								input,_ := strconv.ParseInt(input,10,64)
    								shop_obj,err_5 := shopping_dict[input]
    								if err_5==false{
    									fmt.Println("请输入正确的商品的序号,q是退出,c是付款,j继续选择商品:")
    								}else{
    									total := shop_obj.price_obj["price"]
    									shop_name := shop_obj.shopping_obj["name"]
    									var count int8
    									var new_shop_list []string
    									for num:=0;num<len(shop_list);num++{
    										if shop_list[num] == shop_name{
    									        count++
    									    }else{
    											new_shop_list = append(new_shop_list,shop_list[num])
    										}
    									}
    									shop_list = new_shop_list
    									total = total * float32(count)
    									//保留两位小数
    									n10 := math.Pow10(2)
    									price = float32(math.Trunc((float64(price - total)+0.5/n10)*n10) / n10)
    									fmt.Println("你的商品总价钱是",price,"你选择的商品如下:")
    									fmt.Println(shop_list)
    									fmt.Println("请输入继续输入删除的商品的序号,q是退出,c是付款,j继续选择商品:")
    								}
    							}
    						}
    					}
    				}else {
    					fmt.Println("请输入正确的商品序号,q是退出,c是付款,d删除商品:")
    				}
    			}else{
    				input,_ := strconv.ParseInt(input,10,64)
    				shop_obj,err_2 := shopping_dict[input]
    				if err_2 == false {
    					fmt.Println("请输入正确的商品序号,q是退出,c是付款,d删除商品:")
    				}else{
    					//fmt.Println(shopping_obj)
    					price = price + shop_obj.price_obj["price"]
    					shop_list = append(shop_list,shop_obj.shopping_obj["name"])
    					fmt.Println("你的商品总价钱是",price,"你选择的商品如下:")
    					fmt.Println(shop_list)
    					//append(shop_list, shop_obj.shopping_obj["name"])
    					fmt.Println("请输入继续输入,q是退出,c是付款,d删除商品:")
    				}
    			}
    
    		}
    	}
    }
    
    func main()  {
    	shopping()
    }
    

      

  • 相关阅读:
    招行面试
    今日头条面试[教育岗]
    四方精创 面试
    ArrayList 源码
    redis缓存,穿透,击穿,雪崩
    hashMap
    集合整理
    阿里CBU技术部一面
    网安面试
    php递归获取顶级父类id
  • 原文地址:https://www.cnblogs.com/fangjie0410/p/10371281.html
Copyright © 2020-2023  润新知