一,条件语句
常见的就是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("这是无限循环。\n"); } }
三,练习
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("\n") } } for num :=1; num<101;num++ { nums:= num % 2 //fmt.Print(nums) if (nums == 0) { fmt.Print(num) fmt.Printf("\n") } } for num :=1; num<10;num++ { for nums:=num;nums<10;nums++{ fmt.Printf("%v x %v = %2v ",num,nums,num*nums) } fmt.Printf("\n") } fmt.Printf("\n") fmt.Printf("\n") 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("\n") } fmt.Printf("\n") fmt.Printf("\n") for num :=1; num<10;num++ { for nums:=1;nums<10;nums++{ fmt.Printf("%v x %v = %2v ",nums,num,num*nums) } fmt.Printf("\n") } fmt.Printf("\n") fmt.Printf("\n") 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("\n") } fmt.Printf("\n") fmt.Printf("\n") 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("\n") } }
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('\n') input = strings.Replace(input,"\n","",-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('\n') input = strings.Replace(input,"\n","",-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() }