本来这块代码,作为有了一点语言基础的人是真不想写的,因为和其他语言没有什么不同的地方,但是就怕 真的还有人看我的帖子,还真怕真的有初学者在看我帖子,所以还是贴心的抄了一遍。
- 算术运算符
+,-,*,/,%,++,-- 就是进行算术运算的符号,++,-- 似乎也不像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) // 非
}
- 位运算符
& , | ,^
……暂略..
- .其他运算符 & 和 * (这是java中没有的)
& : 返回变量的存储地址。
* : 取指针变量对应的数值。
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)
}