内容简介:[TOC]Go 语言内置的运算符有:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、其他运算符。“_”是特殊标识符,又称占位符(空标识符号),用来忽略结果。
Go基本语法
[TOC]
1、运算符
Go 语言内置的运算符有:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、其他运算符。
(1)算数运算符
运算符 | 描述 |
---|---|
+ | 相加 |
- | 相减 |
* | 相乘 |
/ | 相除 |
% | 求余 |
++ | 自增 |
-- | 自减 |
(2)关系运算符
运算符 | 描述 |
---|---|
== | 检查两个值是否相等,如果相等返回 True 否则返回 False。 |
!= | 检查两个值是否不相等,如果不相等返回 True 否则返回 False。 |
> | 检查左边值是否大于右边值,如果是返回 True 否则返回 False。 |
< | 检查左边值是否小于右边值,如果是返回 True 否则返回 False。 |
>= | 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。 |
<= | 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。 |
(3)逻辑运算符
运算符 | 描述 | ||
---|---|---|---|
&& | 逻辑 AND 运算符。 如果两边的操作数都是 True,则条件 True,否则为 False。 | ||
\ | \ | 逻辑 OR 运算符。 如果两边的操作数有一个 True,则条件 True,否则为 False。 | |
! | 逻辑 NOT 运算符。 如果条件为 True,则逻辑 NOT 条件 False,否则为 True。 |
(4)位运算符
运算符 | 描述 | ||
---|---|---|---|
& | 按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。 | ||
\ | 按位或运算符"\ | "是双目运算符。 其功能是参与运算的两数各对应的二进位相或。 | |
^ | 按位异或运算符"^"是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。 | ||
<< | 左移运算符"<<"是双目运算符。左移n位就是乘以2的n次方。 其功能把"<<"左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 | ||
>> | 右移运算符">>"是双目运算符。右移n位就是除以2的n次方。 其功能是把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。 |
(5)赋值运算符
运算符 | 描述 | |
---|---|---|
= | 简单的赋值运算符,将一个表达式的值赋给一个左值 | |
+= | 相加后再赋值 | |
-= | 相减后再赋值 | |
*= | 相乘后再赋值 | |
/= | 相除后再赋值 | |
%= | 求余后再赋值 | |
<<= | 左移后赋值 | |
>>= | 右移后赋值 | |
&= | 按位与后赋值 | |
^= | 按位异或后赋值 | |
\ | = | 按位或后赋值 |
(6)其他运算符
运算符 | 描述 |
---|---|
& | 取地址符,返回变量存储地址 |
* | 取值符,返回指针的变量 |
特殊标识符 '_'
“_”是特殊标识符,又称占位符(空标识符号),用来忽略结果。
2、流程控制
(1) IF
- 条件表达式没有括号
- 支持一个初始化表达式(可以是并行方式)
- 左大括号必须和条件语句或else在同一行
- 初始化语句中的变量为block级别,同时隐藏外部同名变量 (也就是类似 java 中的就近原则)
func main( a:=true if a,b,c :=1,2,3;a+b+c>6{ fmt.Println("大于6") }else{ fmt.Println("小于等于6") } )
(2)For
go语言没有while,因为for 可以替代while ,⽀持三种循环⽅式,包括类 while 语法。
- Go只有for一个循环语句关键字,但支持3种形式
- 初始化和步进表达式可以是多个值
- 条件语句每次循环都会被重新检查,因此不建议在条件语句中使用函数,尽量提前计算好条件并以变量或常量代替
- 左大括号必须和条件语句在同一行
s := "abc" for i, n := 0, len(s); i < n; i++ { // 常⻅的 for 循环,⽀持初始化语句可以多个值。 println(s[i]) } n := len(s) for n > 0 { // 替代 while (n > 0) {} println(s[n]) // 替代 for (; n > 0;) {} n-- } for { // 替代 while (true) {} println(s) // 替代 for (;;) {} }
(3)switch
- 可以使用任何类型或表达式作为条件语句
- 不需要写break,一旦条件符合自动终止
- 如希望继续执行下一个case,需使用fallthrough语句
- 支持一个初始化表达式(可以是并行方式),右侧需跟分号
- 左大括号必须和条件语句在同一行
func main(){ a:=1 switch a{ //方式一 case 0: fmt.Println("111") case 1: fmt.Println("222") default: fmt.Println("default") } switch { //方式二 case a>=0: fmt.Println("111") case a>=1: fmt.Println("222") default: fmt.Println("default") } switch a:=1;{ //方式三 case a>=0: fmt.Println("111") case a>=1: fmt.Println("222") default: fmt.Println("default") } }
3、Goto, Break, Continue
GO 语言支持 goto、break、continue 三种循环控制语句,三个语句都可以配合标签( label )使用,标签名区分大小写,定义后不使用会造成编译错误。
func main() { var i int for { println(i) i++ if i > 2 { goto BREAK } } BREAK: println("break") EXIT: // Error: label EXIT defined and not used }
注意,goto、continue、break语句跳出到标签,一定要注意标签的位置,避免死循环。
注意:goto语句与标签之间不能有变量声明,否则编译错误。
func main() { fmt.Println("start") goto Loop var say = "hello oldboy" fmt.Println(say) Loop: fmt.Println("end") }//会引发编译错误
break 语句跳出当前循环。可以配合标签使用跳出多层循环。
continue :跳过当前循环的剩余语句,然后继续进行下一轮循环。。也可以配合标签跳出多层。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Swift语法快速入门(一)之 Swift基础语法
- 在ES6中使用扩展语法有什么好处?它与rest语法有什么不同?
- Python 基础语法
- go语法
- JPQL 语言语法
- reStructuredText简明语法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Agile Web Development with Rails, Third Edition
Sam Ruby、Dave Thomas、David Heinemeier Hansson / Pragmatic Bookshelf / 2009-03-17 / USD 43.95
Rails just keeps on changing. Rails 2, released in 2008, brings hundreds of improvements, including new support for RESTful applications, new generator options, and so on. And, as importantly, we’ve a......一起来看看 《Agile Web Development with Rails, Third Edition》 这本书的介绍吧!