开发者学堂课程【GO 语言核心编程-基础语法、数组、切片、Map:算数运算符细节讨论】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/625/detail/9542
算数运算符细节讨论
目录
一、 算术运算符细节说明
二、 案例
三、 课堂练习
本节课来看算术运算符的细节。
一、算术运算符细节说明
在 go 语言里使用算术运算符的时候,需要注意有以下5点:
1. 对于除号"/",它的整数除和小数除是有区别的:整数之间做除法
时,只保留整数部分而舍弃小数部分。例如:x=19/5 ,结果是3。
// x=19/5本身结果为3.8,四舍五入为4,又因为两个值均为整数,最后结果必须为整数,则小数部分去除。
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)对于除号"/",它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。例如:x=19/5 ,结果是3
(2)当对一个数取模时,可以等价 a%b=a-a/b*b,这样可以看到取模的一个本质运算。
(3)Golang 的自增自减只能当做一个独立语言使用时,不能这样使用 b := a++或者 b := a--
在 chapter04文件夹中新建 demo02,再次新建文件 main.go。将结构拷贝过来,代码如下:
package main
import (
“fmt”
)
func main
(){
//在 golang 中,++和--只能独立使用
var i int = 8
var a int
a =
i
++
//错误,i++只能独立使用
a = i--
//错误,i--只能独立使用
//若想使用 a = i++,则先赋于i++,随后即可使用;a = i--同样如此。
if i++ > 0
{
fmt.Print
l
n( “ok”)
}
如上语法在很多语言中是支持的,将某一个值++后与某一值对比是常见的,但是在 Golang 不被允许,原因在于保存之后会提示错误!若将++去除,就不会提示错误。
综上:
均不可行!所以在 golang 中,++和 --只能独立使用。这是 golang 中的强制性语法,从 golang 设计者角度,因为在初学者眼中,++与--是令人厌烦的,运算完还需进行判断。所以变为独立使用。例如:先完成 i++,再进行比较,强制语法的统一性和简洁性,减少歧义。
接下来看下一个:
(4) Golang 的++和--只能写在变量的后面,不能写在变量的前面,即:只有 a++ a--没有++a -–a。
这里体现出设计者强制语言不要有歧义的设计理念。意思就是并不需要整理出复杂的东西,要给人一目了然的。
例如:
var i int = 1
i++
//正确
输出:
f
mt.Println(“i=”,i)
}
在 cmd.exe 里输入以下命令回车:
cd
..\demo02
g
o run main.go
输出结果:
i=2
可以看到 i=2,正确。但是不能如此操作!
在 i++后进行++i //大多数编程语言中可进行,但是这种情况会出现报错!
+
+i
//错误,在 golang 没有前++
i
--
//正确
-
-
i
//错误,在 golang 没有前--
fmt.println(“i=”,i)
所以++i 与--i 这2种写法是错误的。
三、课堂练习
课堂练习题1
1. Var i int = 1
i=i++
// i=i++ 这是一个错误的代码,所以不会产生任何结果。
//编译不通过
fmt.Println
(
i);
//问:结果是多少?为什么?
//上面的代码时错误,编译不通过,i = i++
2. Var i int= 10 //第一行内容正确
if i++ >10 {
//错误,因为违背了i++是独立使用的
fmt.Println(“ok”)
}
//问:结果是多少?为什么?
//上面的代码时错误,编译不通过,i++ >10。
关于课堂练习就讲解到这里。
本节课关于使用运算符的注意事项和课堂练习1就介绍到这里。