Go语言基础语法2 | 青训营

74 阅读3分钟

运算符

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较、、、等。

算数运算符:

是对数值类型的变量进行运算的

运算符: + 、- 、* 、/ 、% 、++ 、--

var n1 int = 4 + 7
fmt.Println(n1) //加法运算,数字相加
var n2 string = "ac" + "cd"
fmt.Println(n2) //用 + 实现字符串拼接
 
fmt.Println(10/3) //两个int类型数据进行/运算,结果一定为整型
fmt.Println(10.0/3) //浮点型参与运算,结果为浮点型

fmt.Println(10%3) // %运算公式:10-10/3*3
 
var a int = 10
a++  // ++ 自增,加1操作( -- 同理)
fmt.Println(a)
// 在Go语言中, ++ 或 -- 只能单独使用,不能参与到运算中去
//在Go语言里,++ 或 -- 只能在变量的后面,不能写在变量的前面,例: ++a (错误写法)
赋值运算符:

将某个运算后的值,赋给指定的变量

运算符:= 、+= 、-= 、/= 、%=

var n1 =10
//赋值使n1 = 10 
var n2 int =(10+20) % 3 + 3 -7
//将等号右侧的值运算清楚后再将值赋给等号的左侧
var n3 int =10
n3 += 20 //等价于n3 = n3 +20( -= 同理) 
关系运算符:

经常用在控制流程中,结果都是bool型(要么是ture,要么是false)

运算符:== 、!= 、> 、< 、>= 、<=

 fmt.Println(4==8) //判断左右两侧的值是否相等
 fmt.Println(4!=8) //判断左右两侧的值是否不相等
 fmt.Println(4>8) //判断左侧是否大于右侧
 fmt.Println(4<8) //判断左侧是否小于右侧 
 fmt.Println(4>=8) //判断左侧是否大于等于右侧
 fmt.Println(4<=8) //判断左侧是否小于等于右侧
其他运算符:

& :返回变量的存储地址 * :取指针变量对应的数值

var age int = 18
fmt.Println(&age) //输出age对应的存储空间地址

var ptr *int = &age
fmt.Println(*ptr) //输出ptr这个指针指向的具体数值

流程控制

流程控制语句是用来控制程序语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块

if 分支:
if date < 5 { // if 后面是条件表达式,表达式左右的()可以不写
fmt.Println("这是一个短假期") //逻辑代码
}

if后面表达式,发返回结果一定是true 或 false

在go语言中,if 后面可以并列的加入变量的定义

if date := 2;date <3{
fmt.Println("这是一个短假期") 
}

多分支语句运用else,达到多选一的效果

if date >= 3 && date < 5 { //等同于 else if date < 5
fmt.Println("这是一个不长不短的假期")
}
switch分支:

switch后是一个表达式(常量、变量、一个有返回值的函数)

case后的各个值的数据类型,必须和switch的表达式数据类型一致

case后面可以带多个表达式,使用逗号间隔开

case后面的表达式如果是个常量值,则要求不能重复

case后面不需要带break,程序匹配到一个case后就会执行对应的代码块,然后退出switch,如果一个都匹配不到,则执行default

switch后也可以不带表达式,当作if分支来使用

var date int = 5
switch date/3 {
    case 1 :
        fmt.Println("这是一个不长不短的假期")
    case 0 :
        fmt.Println("这是一个短假期")
}

default是一个用来“兜底”的一个分支,其他case分支都不走的情况就会走default;可以放在任何位置上,不一定非要放在最后

switch分支中,每个case分支后都用break结束当前分支,但是在go语言中break可以省略不写

break可以结束正在执行的循环(离它最近的循环)

for循环

for循环语句是支持迭代的一种通用结构,是最有效的、最灵活的循环结构。for循环在第一次反复之前要进行初始化,然后对布尔表达式进行判定,若判定结果为true则执行循环体,否则终止循环

 var sum int = 0
 for var n int = 1 ; n <= 5 ; n++{
     sum += n
 }
 

Go语言中的 for 循环与C语言一样,都允许在循环条件中定义和初始化变量,唯一的区别是,Go语言不支持以逗号为间隔的多个赋值语句,必须使用平行赋值的方式来初始化多个变量。

在结束每次循环前执行的语句,如果循环被 break、goto、return、panic 等语句强制退出,结束语句不会被执行。