• Golang入门笔记(3)—— 运算符


            本来这块代码,作为有了一点语言基础的人是真不想写的,因为和其他语言没有什么不同的地方,但是就怕 真的还有人看我的帖子,还真怕真的有初学者在看我帖子,所以还是贴心的抄了一遍。

    和Java不同的地方 1. &变量取地址,*地址变量 取值;  2.  ++,--  用法不同
    • 算术运算符 

            +,-,*,/,%,++,-- 就是进行算术运算的符号,++,-- 似乎也不像java和C那样可以支持 取值的操作,++、-- 就仅仅是一个操作而已。

             go语言不支持 ++a,--a,不支持三木运算符,的确降低了一些初学编程者的学习成本。

    练习代码:

    1. package main
    2. import (
    3. "fmt"
    4. "unsafe"
    5. )
    6. func main() {
    7. fmt.Println("\n ----------------- + 加法运算 --------------")
    8. // + 加号: 1.正数(感觉冗余感受不到用处) 2.相加操作 3.字符串拼接
    9. var num1 int = +10
    10. fmt.Println(num1) //10
    11. var num2 int = 20 + 30
    12. fmt.Printf("num2 = %d", num2) //num2 = 50
    13. var string1 string = "这是一句" + "话"
    14. fmt.Printf("\nwords : %s ", string1) //words : 这是一句话
    15. fmt.Println("\n ----------------- / 除法运算 --------------")
    16. // “/” 除号 1.2个int相除,结果为int,除不尽也不会有小数。 2.浮点类型参与计算,结果为浮点数。
    17. fmt.Println(11 / 3) //3
    18. fmt.Println(11 / 3.0) //3.6666666666666665
    19. fmt.Println(11.0 / 3.0) //3.6666666666666665
    20. fmt.Println("\n ----------------- / 乘法运算 --------------")
    21. fmt.Println(unsafe.Sizeof(11.01))
    22. fmt.Println(unsafe.Sizeof(3.01))
    23. fmt.Println("数据相乘", 11.0*3.0, ";空间大小为:", unsafe.Sizeof(11.0*3.0))
    24. fmt.Println("\n ----------------- / 取模运算 --------------")
    25. //取模公式: a%b 相当于计算机在执行如下的结果 ==> a - a/b*b
    26. fmt.Println(10 % 3) // 10%3 = 10-10/3*3 = 1
    27. fmt.Println(-10 % 3) // -10%3 = -10- -10/3*3 = -1
    28. fmt.Println(10 % -3) // 10%-3 = 10 - (10/-3) * (-3) = 1
    29. fmt.Println(-10 % -3) // -10%-3 = -10 - (-10/-3) * (-3) = -10 +9 = -1
    30. // ps 通过我自己运算了一边: a%b = a- a/b*b 这个公式没有毛病。
    31. //++num1 //Go不支持
    32. //--num1 //Go 也不支持
    33. num1++ // -- ++ 只是一个动作,貌似没有返回值。 这点和java和c不同,java和c应该是可以输出这个值的。
    34. fmt.Println(num1)
    35. }
    • 赋值运算符
            可将一个非常复杂的函数或一个表达式,或一个值 ,赋给指定的变量,赋值运算符号有:=,+=,-=,/=,%= 
    1. package main
    2. import "fmt"
    3. func main() {
    4. var num1 int = 10
    5. var num2 int = (10 + num1) % 3
    6. fmt.Println(num2)
    7. var num3 int = 60
    8. num3 += 30 // 即 num3 = num3 + 30
    9. fmt.Println("num3 ", num3)
    10. num3 -= 2 // 即 num3 = num3 - 2
    11. fmt.Println("num3 ", num3)
    12. num3 *= 30 // 即 num3 = num3 * 30
    13. fmt.Println("num3 ", num3)
    14. num3 /= 10 // 即 num3 = num3 / 30
    15. fmt.Println("num3 除后 = ", num3)
    16. num3 %= 3 // // 即 num3 = num3 % 3
    17. // %v 值value的默认表示
    18. fmt.Printf("num3 取模后 = %v ", num3)
    19. }

    • 关系运算符

            关系运算符的结果 一定是 bool 型 ,要么为 true 要么为 false ,主要用于流程控制中。

    1. package main
    2. import "fmt"
    3. func main() {
    4. fmt.Println(6 == 9) //false
    5. fmt.Println(6 != 9) //true
    6. fmt.Println(6 > 9) //false
    7. fmt.Println(6 < 9) //true
    8. }
    • 逻辑运算符

    逻辑运算符:&& 逻辑与 / 短路与   ; || 逻辑或 / 短路或 ;!逻辑非

    1. package main
    2. import "fmt"
    3. func main() {
    4. //逻辑运算符号。 通过短路特性,提高了运算效率。
    5. fmt.Println(true || false) // 短路或
    6. fmt.Println(true && false) // 短路与
    7. fmt.Println(!true) // 非
    8. }
    • 位运算符

    & , | ,^ 

     ……暂略..

    • .其他运算符   & 和 *  (这是java中没有的)

    & : 返回变量的存储地址。

     * : 取指针变量对应的数值。

    1. package main
    2. import "fmt"
    3. func main() {
    4. // 1. &变量 &符号可以取变量地址。
    5. var age int = 18
    6. fmt.Println(" age 存储空间的地址 :", &age) // 0xc00001c0a8
    7. var ptr *int = &age
    8. fmt.Println(ptr)
    9. //1. *一个地址变量 可以获取这个指针地址 指向的值。
    10. fmt.Println("ptr 这个指针指向的具体的值为 ==> ", *ptr)
    11. }

  • 相关阅读:
    【EMQX】使用websocket订阅EMQX数据
    Python之zipfile模块
    本地知识库开源框架Fastgpt、MaxKB产品体验
    Linux下yum源配置实战 1
    【Linux】实用小技巧,如何同时make多个可执行文件?
    【统计分析】(task3) 假设检验3:分类数据检验
    对java序列化和持久化最通俗易懂的理解
    QGIS编译(跨平台编译)之四十六:GrassGIS安装(Windows、Linux、MacOS环境下编译)
    LeetCode合并有序数组
    Java实用类-Enum(枚举)
  • 原文地址:https://blog.csdn.net/wdw18668109050/article/details/127896197