day03 基础知识

news/2024/9/19 11:20:50/文章来源:https://www.cnblogs.com/fuminer/p/18416914

day03 基础知识

今日概要

  • switch case语句,条件判断。
  • for循环语句,循环。
  • goto语法,不太建议使用。
  • 字符串格式化,“拼接”数据。
  • 运算符

1.switch语句

package mainfunc main() {// 表达式/*switch 1 + 1 {case 1:fmt.Println("等于1")case 2:fmt.Println("等于2")case 3:fmt.Println("等于3")fmt.Println("等于3")default:fmt.Println("都不满足")}*/// 变量/*var age intfmt.Scanln(&age)switch age {case "1":fmt.Println("等于1")case 2:fmt.Println("等于2")case 3:fmt.Println("等于3")fmt.Println("等于3")default:fmt.Println("都不满足")}*/// 注意事项: 数据类型一致的情况。 正确:1>2   3+4    错误: 1>"3"   5+"6"
}

2.for循环

2.1 死循环

for {...
}

2.2 布尔值条件

for 1>2 {...
}
flag := true
for flag {}

示例

package mainfunc main() {// 示例1:死循环/*fmt.Println("开始")for {fmt.Println("红鲤鱼与绿鲤鱼与驴")time.Sleep(time.Second * 1) // 等一秒再继续执行}fmt.Println("结束")*/// 示例2:/*fmt.Println("开始")for 2 > 1 {fmt.Println("红鲤鱼与绿鲤鱼与驴")time.Sleep(time.Second * 1) // 等一秒再继续执行}fmt.Println("结束")*/// 示例3:/*fmt.Println("开始")number := 1for number < 5 {fmt.Println("钓鱼要掉刀鱼,刀鱼要到岛上钓")number = 10}fmt.Println("结束")*/// 示例4:/*fmt.Println("开始")number := 1for number < 5 {fmt.Println("钓鱼要掉刀鱼,刀鱼要到岛上钓")number = number + 1}fmt.Println("结束")*/// 示例5:布尔类型的变量/*fmt.Println("开始")flag := truefor flag {fmt.Println("钓鱼要掉刀鱼,刀鱼要到岛上钓")flag = false}fmt.Println("结束")*/}

2.3 变量&条件

for i:=1;i<10; {fmt.Println("钓鱼要掉刀鱼,刀鱼要到岛上钓")i = i + 1
}

2.4 变量&条件&变量赋值

for i:=1;i<10;i=i+1 {fmt.Println("钓鱼要掉刀鱼,刀鱼要到岛上钓")
}
// 简化为:
for i:=1;i<10;i++ {fmt.Println("钓鱼要掉刀鱼,刀鱼要到岛上钓")
}
for i := 1; i < 10; i = i + 2 {fmt.Println("钓鱼要掉刀鱼,刀鱼要到岛上钓")
}

扩展:对于 i=i+1简写 --> i++

num := 10
fmt.Println(num)
num++ // 等价于 num = num + 1
fmt.Println(num)
num := 10
fmt.Println(num)
num-- // 等价于 num = num - 1
fmt.Println(num)

阶段练习题

  1. 猜数字,设定一个理想数字比如:66,一直提示让用户输入数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有输入等于66,显示猜测结果正确,然后退出循环。
  2. 使用循环输出1~100所有整数。
  3. 使用循环输出 1 2 3 4 5 6 8 9 10,即:10以内除7以外的整数。
  4. 输出 1~100 内的所有奇数。
  5. 输出 1~100 内的所有偶数。
  6. 求 1~100 的所有整数的和。
  7. 输出10~1 所有整数。

2.5 continue

在for循环中,当循环遇到continue关键字时,会停止当前循环,开始下一次循环。

for{fmt.Println("Alex今天不在家,沛齐你来陪我呀!!!")continuefmt.Println("让苑昊也一起来")
}

案例1:使用循环输出 1 2 3 4 5 6 8 9 10,即:10以内除7以外的整数。

for i:=1;i<=10;i++{if i == 7{continue}fmt.Println(i)
}

案例2:for循环嵌套

for i:=1;i<3;i++{// i=1// i=2for j:=1;j<5;j++{// j=1/2/3/4fmt.Println(i,j)}
}>>> 输出:
1 1
1 2
1 3
1 4
2 1
2 2
2 3
2 4

案例3:for循环嵌套 + continue

for i:=1;i<3;i++{// i=1// i=2for j:=1;j<5;j++{// j=1/2/3/4if j == 3{continue}fmt.Println(i,j)}
}>>> 输出:
1 1
1 2
1 4
2 1
2 2
2 4

2.6 break

在for循环中时,循环中一旦遇到break,跳出循环。

for{fmt.Println("王老汉、李老汉、张老汉")breakfmt.Println("alex老婆满身大汗")
}

案例1:猜数字,设定一个理想数字比如:66,一直提示让用户输入数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有输入等于66,显示猜测结果正确,然后退出循环。

fmt.Print("开始")
data := 66
for{var userInputNumber intfmt.Print("请输入数字:")fmt.Scanln(&userInputNumber)if userInputNumber > data {fmt.Println("大了")} else if userInputNumber < data {fmt.Println("小了")} else {fmt.Println("恭喜你猜对了")break}
}
fmt.Print("结束")

案例2:

for i:=1;i<3;i++{// i=1// i=2for j:=1;j<5;j++{// j=1/2/3/4if j == 3{break}fmt.Println(i,j)}
}>>> 输出:
1 1
1 2
2 1
2 2
for i:=1;i<3;i++{// i=1// i=2for j:=1;j<5;j++{// j=1/2/3/4if j == 3{break}fmt.Println(i,j)}break
}>>> 输出:
1 1
1 2

对for进行打标签,然后通过break和continue就可以实现多层循环的跳出和终止。

f1:for i := 1; i < 3; i++ {// i=1// i=2for j := 1; j < 5; j++ {// j=1/2/3/4if j == 3 {continue f1}fmt.Println(i, j)}}>>> 输出:
1 1
1 2
2 1
2 2
f1:for i := 1; i < 3; i++ {// i=1// i=2for j := 1; j < 5; j++ {// j=1/2/3/4if j == 3 {break f1}fmt.Println(i, j)}}>>> 输出:
1 1
1 2

3.goto语句

跳跃到指定的行,然后向下执行代码。

package mainimport "fmt"func main() {var name stringfmt.Print("请输入姓名:")fmt.Scanln(&name)if name == "wupeiqi" {// svipgoto SVIP} else if name == "yuanhao" {// vipgoto VIP}fmt.Println("预约...")
VIP:fmt.Println("等号...")
SVIP:fmt.Println("进入...")
}

4.字符串格式化

将数据格式化成为特定格式的字符串时,可以使用字符串格式化。

package mainimport "fmt"func main() {var name, address, action stringfmt.Print("请输入姓名:")fmt.Scanln(&name)fmt.Print("请输入位置:")fmt.Scanln(&address)fmt.Print("请输入行为:")fmt.Scanln(&action)result := fmt.Sprintf("我叫%s,在%s正在干%s", name, address, action)//result := "我叫" + name + "在" + address + "干" + actionfmt.Println(result)
}

5.运算符

5.1 算数运算符

image-20200602230315027

5.2 关系运算符

image-20200602230358895

5.3 逻辑运算符

image-20200602230437070
if !true {fmt.Println("你是风儿我是沙,去你吗的风河沙")
}

5.4 位运算符

image-20200602230522054

必知必会概念:

  • 计算机中的 存储、运算、网络传输等任何的行为,本质上都是二进制的操作。例如:01010101。

      A				                  B
    hello   -> 0101010010101  ->    hello
    
  • 信息表现形式

    二进制表示:0101010010101   ->  hello
    十进制表示:1921            ->  hello
    
  • 十进制和二进制的转换关系

    十进制 二进制
    0 0
    1 1
    2 10
    3 11
    4 100
    5 101
    6 110
    7 111
    8 1000
    9 1001
    10 1010
    ... ...
    • 二进制转换为十进制

      10101         ->   2**4 + 2**2 + 2**0 => 16 + 4 + 1 => 21
      101010010101  ->   2**11 + 2**9 + ....
      
    • 十进制转换成二进制

      99            -> 64 + 32 + 2 + 1  -> 2**6 + 2**5 + 2**1 + 2*0  -> 1100011
      

位运算指的是二进制之间的运算:

// 1.按位进行与运算(全为1,才得1)
r1 := 5 & 99
5  -> 0000101
99 -> 11000110000001   -> 1// 2.按位进行或运算(只要有1,就得1)
r2 := 5 | 99
5  -> 0000101
99 -> 11000111100111   -> 2**6 + 2**5 + 2**2 + 2**1 + 2**0 = 64 + 32 + 4 + 2 + 1 = 103// 3.按位进行异或运算(上下不同,就得1)
r3 := 5 ^ 99
5  -> 0000101
99 -> 11000111100110   -> 2**6 + 2**5 + 2**2 + 2**1 = 64 + 32 + 4 + 2 = 102// 4.按位向左移动
r4 := 5 << 25  -> 101
向左移动2位  -> 10100  -> 2**4 + 2**2 = 16 + 4 = 20// 5.按位向右移动
r5 := 5 >> 15  -> 101
向右移动1位  -> 10  -> 2**1 = 2// 6.比较清除   // 以前面的值为基准,让前面的和后面的值的二进制位进行比较,如果两个位置都是1,则讲前面的值的那个位置置0
r6 := 5 &^ 99
5  -> 0000101
99 -> 11000110000100     -> 2**2 = 4

5.5 赋值运算符

image-20200602230552667
age := 19
age = 99age = age + 9  // age+=9
age = age - 9  // age-=9
age = age * 9  // age*=9
...

运算符的优先级

Precedence    Operator5             *  /  %  <<  >>  &  &^4             +  -  |  ^3             ==  !=  <  <=  >  >=2             &&1             ||
v1 := 3 + 2 * 2
v2 := 8 == 5 & 99

注意:不要想办法去记住他,使用括号。

参考地址:

  • https://golang.org/ref/spec#Arithmetic_operators
  • https://www.runoob.com/go/go-operators.html

叮嘱:不要太过于用心去背、记,主要认识即可。优先级记不住就用括号。

今日作业

  1. 猜年龄游戏,要求:允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出。
  2. 实现用户登录系统,并且要支持连续3次输错之后直接退出,并且在每次输错误时显示剩余错误次数(提示:使⽤字符串格式化)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/798523.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day02 快速上手

day02 快速上手 今日概要初识包管理,知道项目中文件和文件、文件和文件夹之间关系。输出,写代码,在go编译器运行时会在屏幕显示内容。初识数据类型整型,数字。例如:1、2、3、4 字符串,表示文本信息。例如:“如家” "锦江之星" 布尔类型,真假。例如: 1>2…

在研究yum源的时候发现的一个小工具

在确保联网的情况下 在终端输入以下命令: bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh)

day01 环境搭建

day01 环境搭建 Go 和 C语言、C++、Python、Java 等一样都是编程语言。学习任何一门编程语言本质上都分3步走:第一步:安装 解释器 或 编译器。 第二步:学相关编程语言语法,然后写代码。 第三步:用已安装解释器 或 编译器 去运行自己写的代码,这样代码就会去完成我们编写的…

day01 GO环境搭建

day01 环境搭建 Go 和 C语言、C++、Python、Java 等一样都是编程语言。学习任何一门编程语言本质上都分3步走:第一步:安装 解释器 或 编译器。 第二步:学相关编程语言语法,然后写代码。 第三步:用已安装解释器 或 编译器 去运行自己写的代码,这样代码就会去完成我们编写的…

代码随想录算法 - 二叉树7

题目1 669. 修剪二叉搜索树 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存…

Docker 进阶篇-CIG 重量级监控系统

上一篇讲的是轻量级的监控工具,本文就来讲重量级的: CAdvisor + InfluxDB + Granfana,简称 CIG。上一篇讲的是轻量级的监控工具,本文就来讲重量级的: CAdvisor + InfluxDB + Granfana,简称 CIG。 ​ ‍ ‍ docker stats 原生的 Docker 命令中,stats 可以查看每个容器占用…

macOS Sequoia 15 发布,iPhone 镜像、密码应用程序、窗口平铺更新等带来全新体验

macOS Sequoia 15 发布,iPhone 镜像、密码应用程序、窗口平铺更新等带来全新体验macOS Sequoia 15 发布,iPhone 镜像、密码应用程序、窗口平铺更新等带来全新体验 2024 年 9 月 17 日凌晨 1 点 请访问原文链接:https://sysin.org/blog/macOS-Sequoia/,查看最新版。原创作品…

基于Java+Springboot+Vue开发的大学竞赛报名管理系统

项目简介该项目是基于Java+Springboot+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的大学竞赛报名管理系统项目,大学生可以在…

基于Java+Springboot+Vue开发的蛋糕商城管理系统

项目简介该项目是基于Java+Springboot+Vue开发的蛋糕商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的蛋糕商城管理系统项目,大学生可以在实践中学…

产品架构图

这批产品架构图一出,设计、前后端都得服的

VMware Avi Load Balancer 30.2.2 发布下载,新增功能概览

VMware Avi Load Balancer 30.2.2 发布下载,新增功能概览VMware Avi Load Balancer 30.2.2 - 多云负载均衡平台 应用交付:多云负载均衡、Web 应用防火墙和容器 Ingress 服务 请访问原文链接:https://sysin.org/blog/vmware-avi-load-balancer-30/,查看最新版。原创作品,转…

用户验收测试指南1UAT的重要性

1 UAT的重要性 简介中介绍了一些有助于更好地理解 UAT 的一般概念,并介绍了一些备受瞩目的项目失败案例。这些失败即使不是由 UAT 引起的,也肯定不是由 UAT 避免的。第 1 章概述了 UAT、UAT 的目的、UAT 与实施项目的关系以及参与项目的人员。您将了解为什么 UAT 不同于其他类…