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

【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(解引用)

相关文章:

  • MFC开发:图形的绘制
  • C++八大常见的设计模式的实现与实践指南
  • 【亲测有效,已顺利上线】你好,你的小程序涉及提供播放、观看等服务,请补充选择:文娱-其他视频类目。(多种没有资质的解决方案)
  • 【EDA】Altium Designer关于禁网设置的那些事
  • 数据库系统概论
  • 【大模型基础_毛玉仁】3.1 Prompt 工程简介
  • 从0到1彻底掌握Trae:手把手带你实战开发AI Chatbot,提升开发效率的必备指南!
  • 活码在实际操作中的具体场景有哪些?怎么应用?
  • 蓝桥杯嵌入式组第十四届省赛题目解析+STM32G431RBT6实现源码
  • 整合百款经典街机游戏的模拟器介绍
  • 算法刷题记录——LeetCode篇(3) [第201~300题](持续更新)
  • 谱分析方法
  • 为什么“连接断开可能导致锁未释放”
  • 3.17 模拟赛总结(虚树求交,FWT/容斥, 后缀数组SA)
  • 【八股文】从浏览器输入一个url到服务器的流程
  • 密度估计:参数与非参数
  • 获取ftp目录及子目录下的文件并下载下来
  • 让人感到疑惑的const
  • Java Fork/Join框架详解(并行计算框架、高效负载均衡、分治)
  • GigE数据接口的工业相机 稳健、性能好
  • 中国海警舰艇编队5月14日在我钓鱼岛领海巡航
  • 因操纵乙烯价格再遭诉讼,科莱恩等四家企业被陶氏索赔60亿
  • 马上评丨岂能为流量拿自己的生命开玩笑
  • 一海南救护车在西藏无任务拉警笛开道,墨脱警方:已处罚教育
  • 水豚“豆包”出逃已40天,扬州茱萸湾景区追加悬赏
  • 北美票房|昔日偶像风光不再,乔什·哈内特新片开画不佳