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("这是无限循环。\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()
- }
go语言的条件语句和循环语句的更多相关文章
- 不可或缺 Windows Native (3) - C 语言: 运算符,表达式,条件语句,循环语句,转向语句,空语句等
[源码下载] 不可或缺 Windows Native (3) - C 语言: 运算符,表达式,条件语句,循环语句,转向语句,空语句等 作者:webabcd 介绍不可或缺 Windows Native ...
- GO语言的基本语法之变量,常量,条件语句,循环语句
GO语言的基本语法之变量,常量,条件语句,循环语句 作为慕课网得笔记自己看 定义变量: 使用var关键字 var a, b, C bool var s1, s2 string = "hell ...
- javascript语句——条件语句、循环语句和跳转语句
× 目录 [1]条件语句 [2]循环语句 [3]跳转语句 前面的话 默认情况下,javascript解释器依照语句的编写顺序依次执行.而javascript中的很多语句可以改变语句的默认执行顺序.本文 ...
- python基础(4):条件语句与循环语句
今天我们看看条件语句与循环语句. 预习: 1.使用while循环输出1 2 3 4 5 6 8 9 10 2.求1-100的所有数的和 3.输出 1-100 内的所有奇数 4.输出 1-100 内的所 ...
- Go语言学习笔记六: 循环语句
Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...
- Shell学习(三)——Shell条件控制和循环语句
参考博客: [1]Shell脚本的条件控制和循环语句 一.条件控制语句 1.if语句 1.1语法格式: if [ expression ] then Statement(s) to be execut ...
- Shell脚本的条件控制和循环语句
条件判断:if语句 语法格式: if [ expression ] then Statement(s) to be executed if expression is true fi 注意:expre ...
- 前端笔记知识点整合之JavaScript(三)关于条件判断语句、循环语句那点事
一.条件分支语句 条件分支语句,也叫作条件判断语句,就是根据某种条件执行某些语句,不执行某些语句. JS中有三种语法是可以表示条件分支的 1.1 if……else…… 条件分支的主力语法,这个主力 ...
- 前端笔记之JavaScript(三)关于条件判断语句、循环语句那点事
一.条件分支语句 条件分支语句,也叫作条件判断语句,就是根据某种条件执行某些语句,不执行某些语句. JS中有三种语法是可以表示条件分支的 1.1 if……else…… 条件分支的主力语法,这个主力语法 ...
- 第二百八十七节,MySQL数据库-条件语句、循环语句、动态执行SQL语句
MySQL数据库-条件语句.循环语句.动态执行SQL语句 1.if条件语句 delimiter \\ CREATE PROCEDURE proc_if () BEGIN ; THEN ; ELSEIF ...
随机推荐
- 基于C/S 结构的IM即时通讯软件--下篇
3.实现界面事件函数 客户端:单击" 进入" 按钮发送请求,如果要与服务器通信,必须要同时发送结构体信息描述发送内容,便于服务器处理. void CCase010Dlg::OnBn ...
- 两将军问题、拜占庭将军问题、TCP三路握手过程的联系
2015年初时产生了一个疑问:基于不可靠的通信链路,为什么在两将军问题中永远无法达到共识,而在TCP三路握手中可以? 今天抽出了一些时间进行研究发现,实际上TCP三路握手也不是完全可靠的,只是一个近似 ...
- Rsync + Lsyncd服务实现文件实时同步/备份
1.接受端安装rsync yum -y install rsync 2.配置同步模块 vim /etc/rsyncd.conf # any name you like [backup] # desti ...
- spring boot常用注解小计
@Async 需要执行异步方法时,在方法上加上@Async之后,底层使用多线程技术 .启动类上需要加上 @EnableAsync 注意:异步执行方法,不能与引用方法同在一个类里 @Transactio ...
- mybatis sql in not in的使用
xml配置 <select id="SelectAllByNotsampleNo" resultMap="BaseResultMap" parameter ...
- 用js实现一个简单的mvvm
这里利用的object.defineproperty() 方法; <input id='input'><p id='p'><p/>js: const dat ...
- nodejs设置跨域访问
//设置跨域访问app.all('*', function(req, res, next) { res.header("Access-Control-Allow-Origin", ...
- ucos中消息队列的应用(二)
继续说任务间的通信. 本次的任务是在ISR中发送一个消息给任务,ucos的代码中的是非常之简洁和容易理解啊.创建,释放,等待,非常好理解,不再赘述. 说说我遇到的问题,数据帧接收完之后,向消息队列发送 ...
- Kubernetes的三种外部访问方式:NodePort、LoadBalancer和Ingress
NodePort,LoadBalancer和Ingress之间的区别.它们都是将集群外部流量导入到集群内的方式,只是实现方式不同. ClusterIP ClusterIP服务是Kubernetes的默 ...
- Django继承AbstractUser新建UserInfor Model时出现fields.E304错误
错误详情: SystemCheckError: System check identified some issues: ERRORS:app01.UserInfo.groups: (fields.E ...