跳到主要内容

运算符和注释

前言

Go语言内置的运算符有算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和特殊运算符(&是取地址运算符,*是取地址所对应的值的运算符)。

Go语言也有单行注释和多行注释。

算术运算符

算术运算符可以在数值间进行四则运算,也就是加减乘除等操作。

package main
import "fmt"

func main() {
a,b := 37,19
// c := a + b
fmt.Printf("%d + %d = %d \n",a,b, a + b)
fmt.Printf("%d - %d = %d \n",a,b, a - b)
// 相乘
fmt.Printf("%d * %d = %d \n",a,b, a * b)
// 相除取整
fmt.Printf("%d / %d = %d \n",a,b, a / b)
// 取余
fmt.Printf("%d %% %d = %d \n",a,b, a % b)
// 自增
a++
fmt.Printf("a++ = %d \n", a)
// 自减
a--
fmt.Printf("a-- = %d \n", a)
}

关系运算符

关系运算符用来比较两个值的大小关系,例如大于、小于、大于等于、小于等于等等。关系运算符的结果总是布尔值,要么为true,要么为false

package main
import "fmt"

func main() {
var a,b int = 11,2
var c bool
c = a == b
fmt.Printf("%d == %d ? %t \n", a,b,c) // 11 == 2 ? false
c = a != b
fmt.Printf("%d != %d ? %t \n", a,b,c)
c = a >= b
fmt.Printf("%d >= %d ? %t \n", a,b,c)
c = a <= b
fmt.Printf("%d <= %d ? %t \n", a,b,c)
}

逻辑运算符

逻辑运算符有与(&&)或(||)非(!)三种。

在Go语言中,逻辑运算符只能作用于布尔类型的值,不能对数值类型进行操作。

位运算符

位运算符是对整数在内存中的二进制位进行操作,一般情况下是使用较少。

位运算符有 按位与(&)、按位或(|)、按位异或(^)、左移(<<)和右移(>>)。

package main
import "fmt"

func main() {
a,b := 0b00111100, 0b10001101
// fmt.Printf("%T, %#v \n",a,a)
// fmt.Printf("%T, %#v \n",b,b)
// 按位与
fmt.Printf("按位与:%b & %b = %b \n", a, b, a&b)
// 按位或
fmt.Printf("按位或:%b | %b = %b \n", a, b, a|b)
fmt.Printf("按位异或:%b ^ %b = %b \n", a, b, a^b)
fmt.Printf("左移:%b << 3 = %b \n", a, a<<3)
fmt.Printf("右移:%b >> 3 = %b \n", a, a>>3)
}

赋值运算符

  • 简单的赋值:=
  • 相加后再赋值:+=
  • 相减后再赋值:-=
  • 相乘后再赋值:*=
  • 相除后再赋值:/=
  • 取余后再赋值:%=

特殊运算符

  • &:取地址运算符
  • *:取地址的值的运算符
package main
import "fmt"

func main() {
var a int = 11
var b string = "hello"

var p1 = &a
var p2 = &b

fmt.Printf("&a = %x \n", p1)
fmt.Printf("&b = %x \n", p2)

c1 := *p1
c2 := *p2
fmt.Printf("%T, *p1 = %d \n",c1, c1)
fmt.Printf("%T, *p2 = %s \n",c2, c2)
}

注释

  • 单行注释:// ...
  • 多行注释:/* ... */