首页 > 技术文章 > 【go笔记】运算符和注释

XY-Heruo 2021-11-14 22:49 原文

前言

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)
}

注释

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

推荐阅读