Go语言语法基础入门 | (中)
2023/7/30 ·雨辰login
目录:
声明
变量
复合数据类型
---(中篇开始)---
循环
分支
补充:标准输出
---(下篇开始)---
函数
面向对象
上篇指路:Go语言语法基础入门 | (上[)]
这里个人学习笔记总结的中篇,目录相较于上篇,补充了循环和标准输出的内容,本篇文章将会介绍到循环和分支的部分内容,废话不多说,咱们直接开始上内容。
鸣谢:玉米哥:Go语言入门指南(下) | 青训营的文章给我的灵感和启发
循环
在看第一节课的时候,对于有cpp和python基础的我是震惊的:Go语言竟然没有while循环,只有for循环! 这就需要我们仔细思考了,for循环究竟能不能替代while的重要作用?
标准的for循环执行流程:
- 初始化循环变量
- 检查判断条件是否为真,若为真,执行步骤3,否则执行步骤6
- 执行循环体
- 执行表达式,更新循环变量
- 回到步骤2
- 退出循环
首先我们先来看一下for循环语句的一个例子:
for i := 0; i < 5; i++{
fmt.Println("this is number",i)
}
我们来总结一下这里面需要注意的一些事项:
- Go语言循环中没有圆括号
(),就算写上了也会在编译的时候自动去除 - 花括号
{}必须紧跟在循环表达式之后,否则会报错(也就是说不能有用来区分行的空白) - 循环变量的赋值用海象运算符
:=来操作,定义了一个局部变量,循环结束后就被销毁
那我们重点想一下:怎么用for循环实现while的功能?
while的本质其实就是实现一个判断,如果被判断的语句是真,就执行循环内部语句,如果是假就跳出。
我们考虑for的循环表达式:
i := 0; i < 5; i++
看到中间的i < 5其实就起到了这个判断语句的作用。因为被两个;分割的三部分其中任意部分可以省略(省略第一部分的前提是循环变量已经被定义)
所以我们就把for看成while就可以了
i := 0
for ; i < 2 ;{
fmt.Println("这是一个死循环")
//分号不能少
}
这无疑体现了Go语言的一个特点:简洁
分支
Go的分支和cpp的类似,唯一需要注意的地方还是花括号{}的放置位置:要紧跟在判断语句后,防止编译器报错。
if - else 分支
for i := 0; i < 15; i++ {
if i%2 == 0{
fmt.Println(i)
fmt.Println("i可以被2整除")
}else{
fmt.Println("i不符合要求,i加1")
}
}
对于有cpp基础的同学一看就明白,不作过多的解释了
if - else if 分支
for i := 0; i < 15; i++ {
if i%2 == 0{
fmt.Println(i)
fmt.Println("i可以被2整除")
}else if i%3 == 0{
fmt.Println(i)
fmt.Println("i可以被3整除")
}else{
fmt.Println("i不可以被2和3整除")
}
}
switch语句
Go语言中的switch分支语句与其cpp略有不同,在其它语言中,若case语句结束时若没有break结尾,则会执行顺次执行后面的case语句。而在Go语言中,不需要添加break,执行完对应的case语句后就会自动退出
day := "Sunday"
switch day{
case "Sunday", "Saturday": fmt.Println("享受双休!")
case "Monday" : fmt.Println("最痛苦的一集")
default : fmt.Println("好好上班!")
}
同样的,这一部分也非常体现Go语言的简洁性。
补充:标准输出
没有把这部分放在上篇是我莫大的一个失误,竟然没有考虑到还可能会有新手读者看我的文章(虽然确实可能没有)但是还是补充一下最好,因为以后我可能也要忘记
以下内容引用自:Fengfeng-docs 枫枫知道官方文档
在使用fmt中的Println的时候,有没有发现除了这个函数,还有好几个函数
Print 函数直接输出内容
Printf 格式化输出字符串
Println 会在输出内容的结尾添加一个换行符
Printf和Println是用到最多的输出
其中Printf中的格式化字符串特别多,很多都是用不到的,所以重点讲几个
%v按值的本来值输出
%+v在 %v 基础上,对结构体字段名和值进行展开
%#v输出 Go 语言语法格式的值
%T输出 Go 语言语法格式的类型和值
%%输出 % 本体
%b(oOdxX)整型的不同进制方式显示
%UUnicode 字符
%s字符串
%d整数
%f浮点数
%p指针,十六进制方式显示
中篇的内容就先写在这里
下篇积极更新中~