内容简介:[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简明语法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
谷歌时代的柏拉图
[美] 丽贝卡·戈尔茨坦 / 李鹏程 / 中信出版集团·新思文化 / 2017-12-10 / 69.00元
我愿意用我所有的科技去换取和苏格拉底相处的一个下午。 ——史蒂夫•乔布斯 谷歌时代,科技昌明,众声喧哗,哲学提出的许多问题,科学似乎都已经给出了答案。若是如此,为什么我们今天还需要哲学?这个由古希腊城邦时代的哲人苏格拉底和柏拉图开创的学科,真的过时了吗? 已经2400岁 的柏拉图对此有话要说。哲学家兼小说家、美国国家人文奖章获得者戈尔茨坦史海钩沉,从经典著作中复活了柏拉图,让他来......一起来看看 《谷歌时代的柏拉图》 这本书的介绍吧!