Go语言语法基础入门(中) | 青训营

144 阅读2分钟

Go语言语法基础入门 | (中)

2023/7/30 ·雨辰login

目录:

声明

变量

复合数据类型

---(中篇开始)---

循环

分支

补充:标准输出

---(下篇开始)---

函数

面向对象

上篇指路:Go语言语法基础入门 | (上[)]

这里个人学习笔记总结的中篇,目录相较于上篇,补充了循环标准输出的内容,本篇文章将会介绍到循环和分支的部分内容,废话不多说,咱们直接开始上内容。

鸣谢:玉米哥Go语言入门指南(下) | 青训营的文章给我的灵感和启发

循环

在看第一节课的时候,对于有cpp和python基础的我是震惊的:Go语言竟然没有while循环,只有for循环! 这就需要我们仔细思考了,for循环究竟能不能替代while的重要作用?


标准的for循环执行流程:

  1. 初始化循环变量
  2. 检查判断条件是否为真,若为真,执行步骤3,否则执行步骤6
  3. 执行循环体
  4. 执行表达式,更新循环变量
  5. 回到步骤2
  6. 退出循环

首先我们先来看一下for循环语句的一个例子:

for i := 0; i < 5; i++{

fmt.Println("this is number",i)

}

我们来总结一下这里面需要注意的一些事项:

  1. Go语言循环中没有圆括号(),就算写上了也会在编译的时候自动去除
  2. 花括号{}必须紧跟在循环表达式之后,否则会报错(也就是说不能有用来区分行的空白)
  3. 循环变量的赋值用海象运算符:=来操作,定义了一个局部变量,循环结束后就被销毁

那我们重点想一下:怎么用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不符合要求,i1")

    }

 }

对于有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不可以被23整除")

}

 }

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指针,十六进制方式显示


中篇的内容就先写在这里

下篇积极更新中~