当前位置: 首页 > article >正文

【Go】运算符笔记

基本数学运算

Go 语言支持常见的 算术运算符,用于执行数学计算。

运算符说明
+加法
-减法
*乘法
/除法
%取余
++自增
--自减

整数运算只能得到整数部分

package main

import (
	"fmt"
	"math"
)

func main() {
	go_math()
}


func go_math() {
	x, y := 8, 5
	fmt.Printf("x = %d ,y = %d\n", x, y)
	fmt.Println("x/y除法运算:", x/y) //整数运算只能得到整数部分
	fmt.Println("float64(x)/float64(y)浮点运算:", float64(x)/float64(y))
	fmt.Println("x%y取余运算:", x%y)
	x++
	y--
	fmt.Println("x++自增运算:", x)
	fmt.Println("y--自减运算:", y)

	//除了上面的基本运算外,还有一个math库提供了许多数学函数和常量
	fmt.Println("除了上面的基本运算外,还有一个math库提供了许多数学函数和常量")
	fmt.Println("math.Pi=", math.Pi)
	fmt.Println("math.Pow幂运算", math.Pow(5, 3))
	fmt.Println("math.Abs取绝对值:", math.Abs(-100))
}

结果如下

x = 8 ,y = 5
x/y除法运算: 1
float64(x)/float64(y)浮点运算: 1.6
x%y取余运算: 3
x++自增运算: 9
y--自减运算: 4
除了上面的基本运算外,还有一个math库提供了许多数学函数和常量
math.Pi= 3.141592653589793
math.Pow幂运算 125
math.Abs取绝对值: 100

关系运算符

Go 语言中的 关系运算符 用于比较两个值,返回 truefalse
不能使用类似 5 < x < 15 的语法,需要拆分为 5 < x && x < 15

运算符说明示例(x=10结果
<小于x < 5false
>大于x > 5true
<=小于等于x <= 10true
>=大于等于x >= 15false
==等于x == 10true
!=不等于x != 10false

逻辑运算符

用于 多个条件组合判断,支持 短路求值

运算符说明示例(x=10, y=5结果
&&逻辑与(AND)x > 5 && y > 0true
|| 逻辑或(OR)x < 5 || y > 0true
!逻辑非(NOT)!(x > 5)false

短路求值机制:

  • &&(与):如果左侧为 false,右侧表达式不会执行
  • ||(或):如果左侧为 true,右侧表达式不会执行
if 5 > x && 15 > x { // 这里 x=10,5 > 10 为 false,短路后续判断
    fmt.Println(x)
}

位运算符

位运算符作用于整数的 二进制表示

运算符说明示例(5=0101, 6=0110结果
&按位与5 & 6 (0101 & 0110)0100 (4)
|按位或5 | 6 (0101 | 0110)0111 (7)
^按位异或5 ^ 6 (0101 ^ 0110)0011 (3)
<<左移5 << 2 (0101 -> 10100)20
>>右移5 >> 2 (0101 -> 0001)1
fmt.Println(5 | 6)  // 7
fmt.Println(5 & 6)  // 4
fmt.Println(5 ^ 6)  // 3
fmt.Println(5 << 2) // 20
fmt.Println(5 >> 2) // 1

赋值运算符

赋值运算符用于给变量赋值或进行 复合运算

运算符说明示例
=赋值x = 10
+=加后赋值x += 5 (等同于 x = x + 5)
-=减后赋值x -= 3 (等同于 x = x - 3)
*=乘后赋值x *= 2 (等同于 x = x * 2)
/=除后赋值x /= 2 (等同于 x = x / 2)

其他运算符

运算符说明
&取地址
*指针解引用
<-通道通信符号
var a int = 10
var p *int = &a  // 取 a 的地址
fmt.Println(*p)  // 输出 10(解引用)

http://www.kler.cn/a/591592.html

相关文章:

  • 安装并使用anaconda(宏观版)
  • HTML,CSS,JavaScript
  • 微服务即时通信系统---(五)框架学习
  • 解决Spring Boot中Chrome浏览器Session ID频繁变动的问题
  • 基于 ELK、Python、OLaMA 和飞书群的 AI 自动化巡检方案
  • Druid 连接池工具类及其在企业级应用中的实践
  • Linux IP 配置
  • QT 学习笔记2
  • win/linux开机启动exe程序
  • AT指令集-NBIOT
  • 明基PD2700U显示器无法调节图像模式
  • Qt窗口控件之字体对话框QFontDialog
  • 【css酷炫效果】纯CSS实现进度条加载动画
  • Go 语言 `map` 详解
  • 凸优化算法学习笔记:闵可夫斯基和与Slope trick
  • 在k8s中利用Helm部署Prometheus+Grafana和Loki日志系统
  • 什么是时序数据库?
  • mybatis_plus的乐观锁
  • 有了大语言模型还需要 RAG 做什么
  • windows下使用vscode+cline插件体验MCP,体验使用AI控制浏览器,踩坑记录(至少让你节省3个小时弯路版)(喂饭级别)