GO语言学习之运算符
1.运算符的基本介绍
运算符是一种特殊的符号,用以表示数据的运算,赋值和比较等
主要分为:
1》算术运算符
2》赋值运算符
3》比较运算符/关系运算符
4》逻辑运算符
5》位运算符
6》其他运算符
2.算术运算符
算术运算符,对数值类型的变量进行运算,比如:加减乘除
+,-,*,/,%,++,–,
用法和Java以及其他编程语言一样,此处不做实例
注意:
1.j=i++//错误 ++,–只能独立使用,不能赋值
2.++i,–j //错误,go语言中++,–只能在变量后面使用,不能在变量前使用
- i++>10 //这种写法不正确
3.关系运算符(比较运算符)
》关系运算符的运行结果都是bool值
》经常用在if结构或者循环结构中
关系运算符:
==,!=,>,>=,<,<=
代码演示:
var x1 int =100
var x2 int =101
fmt.Println(x1>x2)
fmt.Println(x1>=x2)
fmt.Println(x1==x2)
fmt.Println(x1<=x2)
fmt.Println(x1<x2)
fmt.Println(x1!=x2)
4.逻辑运算符
1.作用:
用于连接两个关系表达式,最终结果也是bool值
2.逻辑运算的说明
&&,逻辑与,有false则为false
||,逻辑或,有true则为true
!,非,取反
3.代码示例:
4.&&,||短路功能
短路与:代码示例
package main
import "fmt"
func main() {
var a=10
if a>10&& test(){
fmt.Println("haha")
}
}
func test() bool{
fmt.Println("我被执行了")
return true
}
短路或:代码示例
package main
import "fmt"
func main() {
var a=10
if a==10|| test(){
fmt.Println("haha")
}
}
func test() bool{
fmt.Println("我被执行了")
return true
}
5.赋值运算符
1.作用:赋值运算符就是将 某个运算后的值或者某个值赋给前面的变量
2.分类:=,+=,-=,*=,/=,%=,和Java中一样
还有一类:(涉及2进制知识)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rDIKv4S4-1574925867997)(C:\Users\xiaoweifeng\AppData\Roaming\Typora\typora-user-images\1574864542865.png)]
package main
import "fmt"
func main() {
//交换 a和 b
a:=8
b:=10
fmt.Printf("交换前:a =%d,b=%d\n",a,b)
//定义临时变量c
c:=a
a=b
b=c
fmt.Printf("交换后:a =%d,b=%d\n",a,b)
}
3.赋值运算符的特点:
1》运算顺序从右向左
2》赋值运算符的左边只能是变量,右边可以是常量,表达式,变量
3》复合运算符
a+=3 <==>a=a+3
4.练习题:
有两个变量a和b,在不设中间变量的情况下,实现a和b交换
a=a+b
b=a-b
a=a-b
6.位运算符
7.其他运算符
8.特别说明
9.运算符的优先级
10.键盘录入语句
1.作用:
在实际编程中,有些数据需要用户自行输入,我们可以使用键盘录入语句进行获取
2.具体实现:
1》先导入fmt包
2》调用fmt包中的fmt.Scanln()或者fmt.Scanf()
Scan、Scanf和Scanln从标准输入os.Stdin读取文本;
Scan和Scanln区别:Scanln会在换行时停止扫描,最后一个条目后必须有换行或者到达结束位置
func Scanln(a …interface{}) (n int, err error)
Scanf:从标准输入读取文本,根据format参数指定的格式将成功读取的空白分隔的值保存进成功传递给本函数的参数。返回成功扫描的条目个数和遇到的任何错误
func Scanf(format string, a …interface{}) (n int, err error)
3.代码示例:
从控制台接收用户信息【姓名,年龄,薪水,是否读过大学】
1》使用fmt.Scanln()获取
package main
import "fmt"//1.
func main() {
//2.声明变量接收录入数据
var name string
var age int
var salary float64
var isNot bool
//友情提示
fmt.Println("请输入姓名")
fmt.Scanln(&name)
//友情提示
fmt.Println("请输入年龄")
fmt.Scanln(&age)
//友情提示
fmt.Println("请输入薪水")
fmt.Scanln(&salary)
//友情提示
fmt.Println("请输入是否受过高等教育")
fmt.Scanln(&isNot)
fmt.Printf("姓名:%v,年龄:%v,收入:%v,%v 受过高等教育",name,age,salary,isNot)
}
2.使用Scanf()获取
fmt.Println("请输入姓名,年龄,收入,受过高等教育,使用空格分隔")
fmt.Scanf("%S %d %f %t",&name,&age,&salary,&isNot)
fmt.Printf("姓名:%v,年龄:%v,收入:%v,%v 受过高等教育",name,age,salary,isNot)
11.进制
",name,age,salary,isNot)
}
2.使用Scanf()获取
fmt.Println("请输入姓名,年龄,收入,受过高等教育,使用空格分隔")
fmt.Scanf("%S %d %f %t",&name,&age,&salary,&isNot)
fmt.Printf("姓名:%v,年龄:%v,收入:%v,%v 受过高等教育",name,age,salary,isNot)
### 11.进制