运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等
1.算术运算符
2.赋值运算符
3.比较运算符
4.逻辑运算苻
5.位运算符
6.其它运算符
算术运算符
算术运算符是对数值类型的变量进行运算的,比如:加减乖除。
练习
//如果运算的数都是整数,那么除后,去掉小数部分,保留整数部分
fmt.Println(10 / 4)//---->2
var num1 float64 = 10 / 4
fmt.Println(num1)//---->2
//希望保留小数,则需要小数参与运算
var num2 float64 = 10.0 / 4
fmt.Println(num2)//---->2.5
// %
//公式:a % b = a - a / b * b
fmt.Println(" 10%3=",10 % 3) //--->1
fmt.Println(" -10%3=",-10 % 3) //--->-10-(-10)/3 *3 =-10-(-9)=-1
fmt.Println(" 10%-3=",10 % -3) //---> 10-10/(-3)* -(3)= 10-9=1
fmt.Println(" -10%-3=",-10 % -3) //--->-10-(-10)/(-3)*(-3)=-1
细节说明
1)对于除号 "/",它的整数除和小数除是有区别的,整数之间做除法时,只保留整数部分而舍弃小数部分。
2)当对一个数取模时,可以等价a % b = a - a / b * b。
3)Golang的自增自减只能当做一个独立语言使用时,不能这样使用
b := a++ 或者b := a--
4)Golang的++和--只能写在变量的后面,不能写在变量的前面,即。只有 a++ a-- 没有++a --a
5)Golang的设计者去掉 c / java 中的自增自减的容易混滑的写法,让Golang更加简洁,统一。
(强制性的)
关系运算符(比较运算)
1)关系运算符的结果都是bool型,也就是要么是true,要么是false
2)关系表达式经常用在 if 结构的条件中或循环结构的条件中
细节说明
1)关系运算时的结果都是bool型,也就是要么是true,要么是false .
2)关系运算符组成的表达式,就们称为关系表达式,:a>b
3)比较运算符 "==" ,不能误写琢" =” 。
逻辑运算符
用于连接多个条件(一般来讲就是关系表达式),最终的结果也是一个bool值。
假定A值为True,B值为False
var age int = 32
if age > 30 && age < 50 {
fmt.Println(" && you are middle")
}
if age > 18 && age < 30 {
fmt.Println(" && you are young")
}
if age > 30 || age < 50 {
fmt.Println(" || you are middle")
}
if age > 18 || age < 30 {
fmt.Println(" || you are young")
}
if age > 30 {
fmt.Println(" ! you are middle")
}
if ! (age > 18 ) {
fmt.Println(" ! you are young")
}
注意事项和细节
1) &&也叫短路与,如果第一个条件为false,则第二个条件不会判断,最络结果为false
2)||也叫短路或 ,如果第一个条件为true,则第二个奈件不会判断,最终结果为true
func main(){
var i int =66
if i < 65 && ok() {
fmt.Println("second ok")
}
}
func ok() bool {
fmt.Println("firsr Ok")
return true
}
赋值运算符
赋值运算符就是将某个运算后的值,赋给指定的变量。
赋值运算符特点
1)运算顺序从右往左
2)赋值运算符的左边只能是变量, 右边可以是变量、表达式、常量值
3)复合赋值运算符等价于下面的效果
比如:a+= 3等价于a= a+ 3
运算符优先级
1)运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。
2) 只有单目运算符、赋值运算符是从右向左运算的。
3) 大致的顺序整理
1:括号,++, --
2:单目运算
3:算术运算符
4:移位运算
5:关系运算符
6:位运算符
7:逻辑运算符
8:赋值运算符
9:逗号
位运算符
其他运算符
特别说明:
Go语言明确不支持三元运算符
//go 中实现三元运算符
var i int = 9
var j int = 6
var k int
if i > j {
k = i;
}else{
k = j;
}
fmt.Println(k)
接受键盘输入语句
在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。
步骤:
1) 导入fmt包
2)调用 fmt包 的 fmt.Scanln() 或者 fmt.Scanf()
func Fscanln(r io.Reader, a ...interface{}) (n int, err error)
Fscanln类似Fscan,但会在换行时才停止扫描。最后一个条目后必须有换行或者到达结束位置。
func Scanffunc Scanf(format string, a ...interface{}) (n int, err error)
Scanf从标准输入扫描文本,根据format 参数指定的格式将成功读取的空白分隔的值保存进成功传递给本函数的参数。返回成功扫描的条目个数和遇到的任何错误。
//方式1 fmt.Scanln
var name string
var age byte
var salary float64
var isPass bool
fmt.Println("请输入你的姓名")
//当程序执行到 fmt.Scanln(&name),程序会停止在这里,等待用户输入,并回车
fmt.Scanln(&name)
fmt.Println("请输入你的年龄")
fmt.Scanln(&age)
fmt.Println("请输入你的薪水")
fmt.Scanln(&salary)
fmt.Println("是否通过英语考试")
fmt.Scanln(&isPass)
fmt.Printf("名字是 %v n 年龄是 %v n 薪水有 %v n 是否通过英语考试 %v n",name,age ,salary,isPass)
//方式2:fmt.scanf,可以按指定的格式输入
fmt.Println("请输入你的名字, 年龄, 薪水,是否通过英语考试 ,使用空格隔开" )
fmt.Scanf("%s %d %f %t",&name,&age,&salary,&isPass)
fmt.Printf("名字是 %v n 年龄是 %v n 薪水有 %v n 是否通过英语考试 %v n",name,age ,salary,isPass)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)