本来这块代码,作为有了一点语言基础的人是真不想写的,因为和其他语言没有什么不同的地方,但是就怕 真的还有人看我的帖子,还真怕真的有初学者在看我帖子,所以还是贴心的抄了一遍。
+,-,*,/,%,++,-- 就是进行算术运算的符号,++,-- 似乎也不像java和C那样可以支持 取值的操作,++、-- 就仅仅是一个操作而已。
go语言不支持 ++a,--a,不支持三木运算符,的确降低了一些初学编程者的学习成本。
练习代码:
- package main
-
- import (
- "fmt"
- "unsafe"
- )
-
- func main() {
-
- fmt.Println("\n ----------------- + 加法运算 --------------")
- // + 加号: 1.正数(感觉冗余感受不到用处) 2.相加操作 3.字符串拼接
- var num1 int = +10
- fmt.Println(num1) //10
-
- var num2 int = 20 + 30
- fmt.Printf("num2 = %d", num2) //num2 = 50
-
- var string1 string = "这是一句" + "话"
- fmt.Printf("\nwords : %s ", string1) //words : 这是一句话
-
- fmt.Println("\n ----------------- / 除法运算 --------------")
- // “/” 除号 1.2个int相除,结果为int,除不尽也不会有小数。 2.浮点类型参与计算,结果为浮点数。
- fmt.Println(11 / 3) //3
- fmt.Println(11 / 3.0) //3.6666666666666665
- fmt.Println(11.0 / 3.0) //3.6666666666666665
-
- fmt.Println("\n ----------------- / 乘法运算 --------------")
- fmt.Println(unsafe.Sizeof(11.01))
- fmt.Println(unsafe.Sizeof(3.01))
- fmt.Println("数据相乘", 11.0*3.0, ";空间大小为:", unsafe.Sizeof(11.0*3.0))
-
- fmt.Println("\n ----------------- / 取模运算 --------------")
- //取模公式: a%b 相当于计算机在执行如下的结果 ==> a - a/b*b
- fmt.Println(10 % 3) // 10%3 = 10-10/3*3 = 1
- fmt.Println(-10 % 3) // -10%3 = -10- -10/3*3 = -1
- fmt.Println(10 % -3) // 10%-3 = 10 - (10/-3) * (-3) = 1
- fmt.Println(-10 % -3) // -10%-3 = -10 - (-10/-3) * (-3) = -10 +9 = -1
- // ps 通过我自己运算了一边: a%b = a- a/b*b 这个公式没有毛病。
-
- //++num1 //Go不支持
- //--num1 //Go 也不支持
- num1++ // -- ++ 只是一个动作,貌似没有返回值。 这点和java和c不同,java和c应该是可以输出这个值的。
- fmt.Println(num1)
-
- }
可将一个非常复杂的函数或一个表达式,或一个值 ,赋给指定的变量,赋值运算符号有:=,+=,-=,/=,%=
- package main
-
- import "fmt"
-
- func main() {
-
- var num1 int = 10
- var num2 int = (10 + num1) % 3
- fmt.Println(num2)
-
- var num3 int = 60
- num3 += 30 // 即 num3 = num3 + 30
- fmt.Println("num3 ", num3)
- num3 -= 2 // 即 num3 = num3 - 2
- fmt.Println("num3 ", num3)
- num3 *= 30 // 即 num3 = num3 * 30
- fmt.Println("num3 ", num3)
- num3 /= 10 // 即 num3 = num3 / 30
- fmt.Println("num3 除后 = ", num3)
- num3 %= 3 // // 即 num3 = num3 % 3
-
- // %v 值value的默认表示
- fmt.Printf("num3 取模后 = %v ", num3)
-
- }
关系运算符的结果 一定是 bool 型 ,要么为 true 要么为 false ,主要用于流程控制中。
- package main
-
- import "fmt"
-
- func main() {
- fmt.Println(6 == 9) //false
- fmt.Println(6 != 9) //true
- fmt.Println(6 > 9) //false
- fmt.Println(6 < 9) //true
- }
逻辑运算符:&& 逻辑与 / 短路与 ; || 逻辑或 / 短路或 ;!逻辑非
- package main
-
- import "fmt"
-
- func main() {
-
- //逻辑运算符号。 通过短路特性,提高了运算效率。
- fmt.Println(true || false) // 短路或
- fmt.Println(true && false) // 短路与
- fmt.Println(!true) // 非
-
- }
& , | ,^
……暂略..
& : 返回变量的存储地址。
* : 取指针变量对应的数值。
- package main
-
- import "fmt"
-
- func main() {
-
- // 1. &变量 &符号可以取变量地址。
- var age int = 18
- fmt.Println(" age 存储空间的地址 :", &age) // 0xc00001c0a8
-
- var ptr *int = &age
- fmt.Println(ptr)
- //1. *一个地址变量 可以获取这个指针地址 指向的值。
- fmt.Println("ptr 这个指针指向的具体的值为 ==> ", *ptr)
-
- }