一,条件语句

常见的就是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 语句 将控制转移到被标记的语句。

无限循环:

  1. package main
  2.  
  3. import "fmt"
  4.  
  5. func main() {
  6. for true {
  7. fmt.Printf("这是无限循环。\n");
  8. }
  9. }  

三,练习

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

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

3,打印九九乘法表

  1. package main
  2.  
  3. import "fmt"
  4.  
  5. func main() {
  6.  
  7. for num :=1; num<101;num++ {
  8. nums:= num % 2
  9. //fmt.Print(nums)
  10. if (nums == 1) {
  11. fmt.Print(num)
  12. fmt.Printf("\n")
  13. }
  14.  
  15. }
  16.  
  17. for num :=1; num<101;num++ {
  18. nums:= num % 2
  19. //fmt.Print(nums)
  20. if (nums == 0) {
  21. fmt.Print(num)
  22. fmt.Printf("\n")
  23. }
  24.  
  25. }
  26.  
  27. for num :=1; num<10;num++ {
  28. for nums:=num;nums<10;nums++{
  29. fmt.Printf("%v x %v = %2v ",num,nums,num*nums)
  30. }
  31. fmt.Printf("\n")
  32. }
  33. fmt.Printf("\n")
  34. fmt.Printf("\n")
  35. for num :=1; num<10;num++ {
  36. for nums:=1;nums<num+1;nums++{
  37. fmt.Printf("%v x %v = %2v ",nums,num,num*nums)
  38. }
  39. fmt.Printf("\n")
  40. }
  41. fmt.Printf("\n")
  42. fmt.Printf("\n")
  43. for num :=1; num<10;num++ {
  44. for nums:=1;nums<10;nums++{
  45. fmt.Printf("%v x %v = %2v ",nums,num,num*nums)
  46. }
  47. fmt.Printf("\n")
  48. }
  49. fmt.Printf("\n")
  50. fmt.Printf("\n")
  51. for num :=1; num<10;num++ {
  52. for new_nums:=1;new_nums<num;new_nums++{
  53. fmt.Printf(" ")
  54. }
  55. for nums:=num;nums<10;nums++{
  56. fmt.Printf("%v x %v = %2v ",num,nums,num*nums)
  57. }
  58. fmt.Printf("\n")
  59. }
  60.  
  61. fmt.Printf("\n")
  62. fmt.Printf("\n")
  63. for num :=1; num<10;num++ {
  64. for new_nums:=num+1;new_nums<10;new_nums++{
  65. fmt.Printf(" ")
  66. }
  67. for nums:=1;nums<num+1;nums++{
  68. fmt.Printf("%v x %v = %2v ",nums,num,num*nums)
  69. }
  70. fmt.Printf("\n")
  71. }
  72. }

4,实现简单的购物车

需求:

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

代码:

  1. //注这是一个简版的购物车功能,没有充值卡和充值的功能,后续有空补上
  2. package main
  3.  
  4. import (
  5. "bufio"
  6. "os"
  7. "fmt"
  8. "strconv"
  9. "strings"
  10. "math"
  11. )
  12.  
  13. type dict struct {
  14. shopping_obj map[string]string
  15. price_obj map[string]float32
  16. }
  17.  
  18. func shopping() {
  19. //创建商品
  20. var dianshiji dict
  21. var diannao dict
  22. var dianhua dict
  23. dianshiji.shopping_obj = map[string]string{
  24. "name":"电视机",
  25. }
  26. dianshiji.price_obj=map[string]float32{
  27. "price":22.11,
  28. }
  29.  
  30. diannao.shopping_obj = map[string]string{
  31. "name":"电脑",
  32. }
  33. diannao.price_obj=map[string]float32{
  34. "price":33.11,
  35. }
  36.  
  37. dianhua.shopping_obj = map[string]string{
  38. "name":"电话",
  39. }
  40. dianhua.price_obj=map[string]float32{
  41. "price":44.11,
  42. }
  43.  
  44. shopping_dict := map[int64]dict{
  45. 1:dianshiji,
  46. 2:diannao,
  47. 3:dianhua,
  48. }
  49.  
  50. //展示商品
  51. fmt.Println("1,",dianshiji.shopping_obj["name"])
  52. fmt.Println("2,",diannao.shopping_obj["name"])
  53. fmt.Println("3,",dianhua.shopping_obj["name"])
  54. //var test *bufio.Reader
  55.  
  56. //输入序号,
  57. var price float32
  58. var shop_list [] string
  59. fmt.Println("请输入正确的商品序号:")
  60. tag := true
  61. for tag {
  62. var test= bufio.NewReader(os.Stdin)
  63.  
  64. input, err := test.ReadString('\n')
  65. input = strings.Replace(input,"\n","",-1)
  66. _, err_1 := strconv.Atoi(input)
  67. fmt.Println(input)
  68. if err == nil{
  69. if (input == "" || err_1!=nil){
  70. //特殊操作(删除商品,购买或退出)
  71. if input == "q"{
  72. tag =false
  73. }else if input == "c"{
  74. fmt.Println("你已付款",price,"你购买的商品如下:")
  75. fmt.Println(shop_list)
  76. tag =false
  77. }else if input == "d"{
  78. fmt.Println("请输入你要删除的商品的序号,q是退出,c是付款,j继续选择商品:")
  79. for true{
  80. input, err_3 := test.ReadString('\n')
  81. input = strings.Replace(input,"\n","",-1)
  82. _, err_4 := strconv.Atoi(input)
  83. if err_3 == nil{
  84. if (input == "" || err_4!=nil){
  85. if input == "j"{
  86. fmt.Println("请输入商品序号,q是退出,c是付款,d删除商品:")
  87. break
  88. }else if input == "q"{
  89. tag =false
  90. break
  91. }else if input == "c"{
  92. fmt.Println("你已付款",price,"你购买的商品如下:")
  93. fmt.Println(shop_list)
  94. tag =false
  95. break
  96. }
  97. }else{
  98. input,_ := strconv.ParseInt(input,10,64)
  99. shop_obj,err_5 := shopping_dict[input]
  100. if err_5==false{
  101. fmt.Println("请输入正确的商品的序号,q是退出,c是付款,j继续选择商品:")
  102. }else{
  103. total := shop_obj.price_obj["price"]
  104. shop_name := shop_obj.shopping_obj["name"]
  105. var count int8
  106. var new_shop_list []string
  107. for num:=0;num<len(shop_list);num++{
  108. if shop_list[num] == shop_name{
  109. count++
  110. }else{
  111. new_shop_list = append(new_shop_list,shop_list[num])
  112. }
  113. }
  114. shop_list = new_shop_list
  115. total = total * float32(count)
  116. //保留两位小数
  117. n10 := math.Pow10(2)
  118. price = float32(math.Trunc((float64(price - total)+0.5/n10)*n10) / n10)
  119. fmt.Println("你的商品总价钱是",price,"你选择的商品如下:")
  120. fmt.Println(shop_list)
  121. fmt.Println("请输入继续输入删除的商品的序号,q是退出,c是付款,j继续选择商品:")
  122. }
  123. }
  124. }
  125. }
  126. }else {
  127. fmt.Println("请输入正确的商品序号,q是退出,c是付款,d删除商品:")
  128. }
  129. }else{
  130. input,_ := strconv.ParseInt(input,10,64)
  131. shop_obj,err_2 := shopping_dict[input]
  132. if err_2 == false {
  133. fmt.Println("请输入正确的商品序号,q是退出,c是付款,d删除商品:")
  134. }else{
  135. //fmt.Println(shopping_obj)
  136. price = price + shop_obj.price_obj["price"]
  137. shop_list = append(shop_list,shop_obj.shopping_obj["name"])
  138. fmt.Println("你的商品总价钱是",price,"你选择的商品如下:")
  139. fmt.Println(shop_list)
  140. //append(shop_list, shop_obj.shopping_obj["name"])
  141. fmt.Println("请输入继续输入,q是退出,c是付款,d删除商品:")
  142. }
  143. }
  144.  
  145. }
  146. }
  147. }
  148.  
  149. func main() {
  150. shopping()
  151. }

  

go语言的条件语句和循环语句的更多相关文章

  1. 不可或缺 Windows Native (3) - C 语言: 运算符,表达式,条件语句,循环语句,转向语句,空语句等

    [源码下载] 不可或缺 Windows Native (3) - C 语言: 运算符,表达式,条件语句,循环语句,转向语句,空语句等 作者:webabcd 介绍不可或缺 Windows Native  ...

  2. GO语言的基本语法之变量,常量,条件语句,循环语句

    GO语言的基本语法之变量,常量,条件语句,循环语句 作为慕课网得笔记自己看 定义变量: 使用var关键字 var a, b, C bool var s1, s2 string = "hell ...

  3. javascript语句——条件语句、循环语句和跳转语句

    × 目录 [1]条件语句 [2]循环语句 [3]跳转语句 前面的话 默认情况下,javascript解释器依照语句的编写顺序依次执行.而javascript中的很多语句可以改变语句的默认执行顺序.本文 ...

  4. python基础(4):条件语句与循环语句

    今天我们看看条件语句与循环语句. 预习: 1.使用while循环输出1 2 3 4 5 6 8 9 10 2.求1-100的所有数的和 3.输出 1-100 内的所有奇数 4.输出 1-100 内的所 ...

  5. Go语言学习笔记六: 循环语句

    Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...

  6. Shell学习(三)——Shell条件控制和循环语句

    参考博客: [1]Shell脚本的条件控制和循环语句 一.条件控制语句 1.if语句 1.1语法格式: if [ expression ] then Statement(s) to be execut ...

  7. Shell脚本的条件控制和循环语句

    条件判断:if语句 语法格式: if [ expression ] then Statement(s) to be executed if expression is true fi 注意:expre ...

  8. 前端笔记知识点整合之JavaScript(三)关于条件判断语句、循环语句那点事

      一.条件分支语句 条件分支语句,也叫作条件判断语句,就是根据某种条件执行某些语句,不执行某些语句. JS中有三种语法是可以表示条件分支的 1.1 if……else…… 条件分支的主力语法,这个主力 ...

  9. 前端笔记之JavaScript(三)关于条件判断语句、循环语句那点事

    一.条件分支语句 条件分支语句,也叫作条件判断语句,就是根据某种条件执行某些语句,不执行某些语句. JS中有三种语法是可以表示条件分支的 1.1 if……else…… 条件分支的主力语法,这个主力语法 ...

  10. 第二百八十七节,MySQL数据库-条件语句、循环语句、动态执行SQL语句

    MySQL数据库-条件语句.循环语句.动态执行SQL语句 1.if条件语句 delimiter \\ CREATE PROCEDURE proc_if () BEGIN ; THEN ; ELSEIF ...

随机推荐

  1. 基于C/S 结构的IM即时通讯软件--下篇

    3.实现界面事件函数 客户端:单击" 进入" 按钮发送请求,如果要与服务器通信,必须要同时发送结构体信息描述发送内容,便于服务器处理. void CCase010Dlg::OnBn ...

  2. 两将军问题、拜占庭将军问题、TCP三路握手过程的联系

    2015年初时产生了一个疑问:基于不可靠的通信链路,为什么在两将军问题中永远无法达到共识,而在TCP三路握手中可以? 今天抽出了一些时间进行研究发现,实际上TCP三路握手也不是完全可靠的,只是一个近似 ...

  3. Rsync + Lsyncd服务实现文件实时同步/备份

    1.接受端安装rsync yum -y install rsync 2.配置同步模块 vim /etc/rsyncd.conf # any name you like [backup] # desti ...

  4. spring boot常用注解小计

    @Async 需要执行异步方法时,在方法上加上@Async之后,底层使用多线程技术 .启动类上需要加上 @EnableAsync 注意:异步执行方法,不能与引用方法同在一个类里 @Transactio ...

  5. mybatis sql in not in的使用

    xml配置 <select id="SelectAllByNotsampleNo" resultMap="BaseResultMap" parameter ...

  6. 用js实现一个简单的mvvm

    这里利用的object.defineproperty() 方法; <input     id='input'><p id='p'><p/>js: const dat ...

  7. nodejs设置跨域访问

    //设置跨域访问app.all('*', function(req, res, next) { res.header("Access-Control-Allow-Origin", ...

  8. ucos中消息队列的应用(二)

    继续说任务间的通信. 本次的任务是在ISR中发送一个消息给任务,ucos的代码中的是非常之简洁和容易理解啊.创建,释放,等待,非常好理解,不再赘述. 说说我遇到的问题,数据帧接收完之后,向消息队列发送 ...

  9. Kubernetes的三种外部访问方式:NodePort、LoadBalancer和Ingress

    NodePort,LoadBalancer和Ingress之间的区别.它们都是将集群外部流量导入到集群内的方式,只是实现方式不同. ClusterIP ClusterIP服务是Kubernetes的默 ...

  10. Django继承AbstractUser新建UserInfor Model时出现fields.E304错误

    错误详情: SystemCheckError: System check identified some issues: ERRORS:app01.UserInfo.groups: (fields.E ...