06-Go语言运算符

算术运算符

  • Go语言算术运算符
1.C语言中算数运算符有
+ - * / %  ++ --
2.Go语言中的算数运算符和C语言一样
+ - * / %  ++ --
并且用法都一样
package main

import "fmt"

func main() {
    res1 := 1+1
    fmt.Println(res1)
    res2 := 5-3
    fmt.Println(res2)
    res3 := 3*4
    fmt.Println(res3)
    res4 := 4 % 3
    fmt.Println(res4)

    // 注意点: 在Go语言中,不允许将++ --写在变量前面,只能写在变量的后面
    num := 1
    //num++
    //++num  这种写法会报错
    fmt.Println(num)


    //注意点: 不同类型的常量(字面量)可以进行运算,不同类型的变量不能进行运算
    value := 3.2 * 4
    fmt.Println(value)

    value2 := 10
    num2 := 2
    res := value2 * num2
    fmt.Println(res)

    var num1 = 10
    var num2 = 20
    res := num2 /num1
    fmt.Println(res)

    //注意点: 两个字符串类型使用+运算符,是两个字符串拼接
    var str1 string = "wjh"
    var str2 string = "niuzi"
    res := str1 + str2
    fmt.Println(res)

    //注意点: 和其他语言不一样,Go语言不支持字符串和其他类型进行拼接
    //换句话说遵守不同类型不能进行运算
    var str = "wjh"
    num := 5
    res := str + num 会报错
    fmt.Println(res)
}

关系运算符

1.C语言中关系运算符
> < >= <= == !=
2.Go语言中关系运算符
> < >= <= == !=
注意点:
在Go语言中,没有非0即真的概念,所以关系运算符号返回的都是true或者false
关系运算符的优先级
不用记, 记住()最高即可
package main

import "fmt"

func main() {
    value1 := 10 > 5
    fmt.Println(value1)
    value2 := 10 < 5
    fmt.Println(value2)

    注意点: 不同的数据类型不能使用关系运算符比较,相同数据类型不同位也不能比较
    var num1 int32 = 10
    var num2 int64 = 20
    res1 := num1 >= num2 会报错
    fmt.Println(res1)

    num1 := 10
    num2 := 10
    //res := num1 == num2
    res := num1 != num2
    fmt.Println(res)
}

逻辑运算符

1.C语言中逻辑运算符
    && || !
2.Go语言中逻辑运算符
    && || !

注意点:
Go语言中逻辑运算符返回的都是true或者false
参与运算的表达式必须是布尔类型才可以
package main

import "fmt"

func main() {
    //&&一假则假
    res1 := (10 < 5) && (4 > 3)
    fmt.Println(res1)

    //参与运算的表达式必须是布尔类型才可以
    res2 := 1 && 0  会报错
    fmt.Println(res2)

    //逻辑或 || 一真则真
    res3 := (2 > 5) || (3 < 4)
    fmt.Println(res3)

    //逻辑非只能作用布尔类型的,没有非零即真的概念
    res4 := !(10>20)
    //res4 := !1
    fmt.Println(res4)
}

位运算符

    1.C语言中的位运算符有
    & | ^ << >>
    2.Go语言的位运算符号C语言一样
    & | ^ << >>
    多了一个 &^ 逻辑清零运算符

    3.位运算是专门用于计算二进制位的
    & 一假则假
    | 一真则真
    ^ 不同为真, 相同为假
    << 乘以2的左移多少次幂
    >> 除以2的右移多次次幂
package main

import "fmt"

func main() {
    // 0100
    //&0110
    // 0100
    a1 := 4
    b1 := 6
    res1 := a1 & b1
    fmt.Println(res1) //4

    // 0100
    //|0110
    // 0110
    a2 := 4
    b2 := 6
    res2 := a2 | b2
    fmt.Println(res2) //6

    // 0100
    //^0110
    // 0010
    //按位异或,不同为真1,相同为假0
    a3 := 4
    b3 := 6
    res3 := a3 ^ b3
    fmt.Println(res3) //2

    // << 左移几位就代表 *2的多少次幂
    num1 := 3
    res4 := num1 << 2
    fmt.Println(res4) //12

    // << 右移几位就代表 /2的多少次幂
    num2 := 16
    res5 := num2 >> 3
    fmt.Println(res5)

    //逻辑清零运算符 &^

    //  0100
    //&^0110
    //  0000

    //如果b的二进制位当前是1,则清零
    //如果b的二进制位当前不是1,则保留a的当前二进制位
    a4 := 4
    b4 := 6
    res6 := a4 &^ b4
    fmt.Println(res6) //0
}

其他运算符

1.C语言中的其它运算符
    & 取地址运算符
    * 访问地址运算符

2.Go语言中的其他运算符和C语言中的一样
    & 取地址运算符
    * 访问地址运算符
package main

import "fmt"

func main() {
    //注意点: 指针变量的数据类型必须和变量的数据类型相同,才能存储该变量的地址

    var num int64
    //定义一个int64类型的指针变量
    var p *int64
    //把num中的地址保存在指针p中
    p = &num
    //访问num中存储的数据
    fmt.Println(*p)
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 运算符用于在程序运行时执行数学或逻辑运算。 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算...
    谁说我是小小云阅读 398评论 0 1
  • 算数运算符 算数运算符和C语言几乎一样 注意点:只有相同类型的数据才能进行运算 Go语言中++、--运算符不支持前...
    极客江南阅读 598评论 1 1
  • 谨记: 上帝在缔造每个人的时候,给予每个人的一切都是相同的,然而,人与人却是存在如此大的差距,记着上帝为你关上了一...
    长风留言阅读 5,220评论 0 5
  • 作者:李骁 9.1 内置运算符 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 Go语言的算...
    ffhelicopter阅读 1,389评论 0 5
  • 时代变迁,遗失的不一定就是不好的,但必然是没有符合当下进行时的。 唯有打破原有规则,创造新的规矩,方为王道。 适者...
    梦千机阅读 317评论 0 0