在Go语言中,一元运算符拥有最高的优先级,二元运算符的运算方向均是从左至右。 下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低: Go语言支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构。 顺序结构:程序按顺序执行,不发生跳转。 选择结构:依据是否满足条件,有选择的执行相应功能。 l循环结构:依据条件是否满足,循环多次执行某段代码。 Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码: 可以使用任何类型或表达式作为条件语句: 关键字 range 会返回两个值,第一个返回值是元素的数组下标,第二个返回值是元素的值: 在循环里面有两个关键操作break和continue,break操作是跳出当前循环,continue是跳过本次循环。
4.运算符和流程控制
3.1 算术运算符
运算符
术语
示例
结果
+
加
10 + 5
15
–
减
10 – 5
5
*
乘
10 * 5
50
/
除
10 / 5
2
%
取模(取余)
10 % 3
1
++
后自增,没有前自增
a=0; a++
a=1
–
后自减,没有前自减
a=2; a–
a=1
3.2 关系运算符
运算符
术语
示例
结果
==
相等于
4 == 3
false
!=
不等于
4 != 3
true
<
小于
4 < 3
false
>
大于
4 > 3
true
<=
小于等于
4 <= 3
false
>=
大于等于
4 >= 1
true
3.3 逻辑运算符
运算符
术语
示例
结果
!
非
!a
如果a为假,则!a为真;如果a为真,则!a为假。
&&
与
a && b
如果a和b都为真,则结果为真,否则为假。
||
或
a || b
如果a和b有一个为真,则结果为真,二者都为假时,结果为假。
3.4 位运算符
运算符
术语
说明
示例
&
按位与
参与运算的两数各对应的二进位相与
60 & 13 结果为12
|
按位或
参与运算的两数各对应的二进位相或
60 | 13 结果为61
^
异或
参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1
60 ^ 13 结果为240
<<
左移
左移n位就是乘以2的n次方。 左边丢弃,右边补0。
4 << 2 结果为16
>>
右移
右移n位就是除以2的n次方。 右边丢弃,左边补位。
4 >> 2 结果为1
3.5 赋值运算符
运算符
说明
示例
=
普通赋值
c = a + b 将 a + b 表达式结果赋值给 c
+=
相加后再赋值
c += a 等价于 c = c + a
-=
相减后再赋值
c -= a 等价于 c = c – a
*=
相乘后再赋值
c *= a 等价于 c = c * a
/=
相除后再赋值
c /= a 等价于 c = c / a
%=
求余后再赋值
c %= a 等价于 c = c % a
<<=
左移后赋值
c <<= 2 等价于 c = c << 2
>>=
右移后赋值
c >>= 2 等价于 c = c >> 2
&=
按位与后赋值
c &= 2 等价于 c = c & 2
^=
按位异或后赋值
c ^= 2 等价于 c = c ^ 2
|=
按位或后赋值
c |= 2 等价于 c = c | 2
3.6 其他运算符
运算符
术语
示例
说明
&
取地址运算符
&a
变量a的地址
*
取值运算符
*a
指针变量a所指向内存的值
3.7 运算符优先级
优先级
运算符
7
^ !
6
/ % << >> & &^
5
+ – | ^
4
== != < <= >= >
3
<-
2
&&
1
||
4.流程控制
4.1.1 if 语句
4.1.1.1 if
var a int = 3 if a == 3 { //条件表达式没有括号 fmt.Println("a==3") } //支持一个初始化表达式, 初始化字句和条件表达式直接需要用分号分隔 if `{ fmt.Println("b==3") }
4.1.1.2 if … else
if a := 3; a == 4 {//当两个条件都成立的时候为真的 fmt.Println("a==4") } else { //左大括号必须和条件语句或else在同一行 fmt.Println("a!=4") }
4.1.1.3 if …else if …else
if a := 3; a > 3 { fmt.Println("a>3") } else if a < 3 { fmt.Println("a<3") } else if a == 3 { fmt.Println("a==3") } else { fmt.Println("error") }
4.1.2 switch语句
var score int = 90 //设置的数据 //进行switch的选择 switch score { case 90://90的时候 fmt.Println("优秀") //fallthrough case 80: //80的时候 fmt.Println("良好") //fallthrough case 50, 60, 70: //50.60,70的时候 fmt.Println("一般") //fallthrough default: //其它的时候 fmt.Println("差") }
//1 switch s1 := 90; s1 { //初始化语句;条件 case 90: fmt.Println("优秀") case 80: fmt.Println("良好") default: fmt.Println("一般") } //2 var s2 int = 90 switch { //这里没有写条件 case s2 >= 90: //这里写判断语句 fmt.Println("优秀") case s2 >= 80: fmt.Println("良好") default: fmt.Println("一般") } //3 switch s3 := 90; { //只有初始化语句,没有条件 case s3 >= 90: //这里写判断语句 fmt.Println("优秀") case s3 >= 80: fmt.Println("良好") default: fmt.Println("一般") }
4.2 循环语句
4.2.1 for
var i, sum int // 设置i,sum,的数据为int for i = 1; i <= 100; i++ { //进行100次 sum += i } fmt.Println("sum = ", sum) //打印数据
4.2.2 range
s := "abc" for i := range s { //支持 string/array/slice/map。 fmt.Printf("%cn", s[i]) } for _, c := range s { // 忽略 index fmt.Printf("%cn", c) } for i, c := range s { fmt.Printf("%d, %cn", i, c) }
4.3 跳转语句
4.3.1 break和continue
for i := 0; i < 5; i++ { if 2 == i { //break //break操作是跳出当前循环 continue //continue是跳过本次循环 } fmt.Println(i) }
注意:break可⽤于for、switch、select,⽽continue仅能⽤于for循环。
4.3.2 goto
用goto跳转到必须在当前函数内定义的标签:
func main() { for i := 0; i < 5; i++ { for { fmt.Println(i) goto LABEL //跳转到标签LABEL,从标签处,执行代码 } } fmt.Println("this is test") //设置跳转到的函数 LABEL: fmt.Println("it is over") }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算