运算符 - Go语言从入门到实战
运算符 - Go语言从入门到实战
算术运算符
假设A变量等于10,B变量等于20。
| 运算符 | 描述 | 实例 |
|---|---|---|
| + | 相加 | A + B 输出结果 30 |
| - | 相减 | A - B 输出结果 -10 |
| * | 相乘 | A * B 输出结果 200 |
| / | 相除 | B / A 输出结果 2 |
| % | 求余 | B % A 输出结果 0 |
| ++ | ⾃增 | A++ 输出结果 11 |
| – | ⾃减 | A-- 输出结果 9 |
特性:Go 语⾔没有前置的 ++,–。不允许 ++a 这种写法,Go语言遵循更严格的语法规则,不允许在变量名之前直接使用++或–。如果你想增加或减少一个变量的值,必须使用赋值运算符(如+=或-=)或者是普通的加法或减法运算符。可以写成a = a + 1或者a += 1。
⽐较运算符
| 操作符 | 检查两个值是否相等 | 示例结果 |
|---|---|---|
| == | 检查两个值是否相等,如果相等返回 True,否则返回 False。 | False |
| != | 检查两个值是否不相等,如果不相等返回 True,否则返回 False。 | True |
| > | 检查左边值是否大于右边值,如果左边值大于右边值返回 True,否则返回 False。 | False |
| < | 检查左边值是否小于右边值,如果左边值小于右边值返回 True,否则返回 False。 | True |
| >= | 检查左边值是否大于或等于右边值,如果左边值大于或等于右边值返回 True,否则返回 False。 | False |
| <= | 检查左边值是否小于或等于右边值,如果左边值小于或等于右边值返回 True,否则返回 False。 | True |
这些比较简单,拎一个讲讲:
⽤ == ⽐较数组
- 相同维数且含有相同个数元素的数组才可以⽐较
- 每个元素都相同的才相等
package main
import "fmt"
func main() { array1 := [3]int{1, 2, 3} array2 := [3]int{1, 2, 3} array3 := [3]int{4, 5, 6} array4 := [3]int{4, 5, '6'} fmt.Println(array1 == array2) // 输出: true fmt.Println(array1 == array3) // 输出: false fmt.Println(array3 == array4) // 输出: false
}
逻辑运算符
| 运算符 | 描述 | 实例 |
|---|---|---|
| && | 逻辑 AND 运算符。如果两边的操作数都是 True,则条件 True,否则为 False。 | (A && B) 为 False |
| || | 逻辑 OR 运算符 。如果两边的操作数有⼀个 True,则条件 True,否则为 False。 | (A || B) 为 True |
| ! | 逻辑 NOT 运算符 。如果条件为 True,则逻辑 NOT 条件 False,否则为 True。 | !(A && B) 为 True |
位运算符
| 运算符 | 描述 | 实例 |
|---|---|---|
| & | 按位与运算符"&"是双⽬运算符。 其功能是参与运算的两数各对应的⼆进位相与。 | (A & B) 结果为 12, ⼆进制为 0000 1100 |
| | | 按位或运算符"|"是双⽬运算符。 其功能是参与运算的两数各对应的⼆进位相或。 | (A | B) 结果为 61, ⼆进制为 0011 1101 |
| ^ | 按位异或运算符"^"是双⽬运算符。 其功能是参与运算的两数各对应的⼆进位相异或,当两对应的⼆进位相异时,结果为1。 | (A ^ B) 结果为 49, ⼆进制为 0011 0001 |
| << | 左移运算符”<<“是双⽬运算符。左移 n 位就是乘以 2 的 n 次⽅。 其功能把”<<“左边的运算数的各⼆进位全部左移若⼲位,由”<<"右边的数指定移动的位数,高位丢弃,低位补0。 | A << 2 结果为 240 ,⼆进制为 1111 0000 |
| >> | 右移运算符”>>“是双⽬运算符。右移 n 位就是除以 2 的 n 次⽅。 其功能是把”>>“左边的运算数的各⼆进位全部右移若⼲位,”>>"右边的数指定移动的位数。 | A >> 2 结果为 15 ,⼆进制为 0000 1111 |
与其他主要编程语⾔的差异
&^ 按位置零
1 &^ 0 – 1
1 &^ 1 – 0
0 &^ 1 – 0
0 &^ 0 – 0
package operator_test
import "testing"const (Readable = 1 << iotaWritableExecutable
)func TestCompareArray(t *testing.T) {a := [...]int{1, 2, 3, 4}b := [...]int{1, 3, 2, 4}// c := [...]int{1, 2, 3, 4, 5}d := [...]int{1, 2, 3, 4}t.Log(a == b)//t.Log(a == c)t.Log(a == d)
}func TestBitClear(t *testing.T) {a := 7 //0111a = a &^ Readablea = a &^ Executablet.Log(a&Readable == Readable, a&Writable == Writable, a&Executable == Executable)
}
可能这里会对十进制数转二进制数有疑惑,举个例子:
将一个十进制数转换为二进制数,可以使用以下方法:
- 将十进制数除以 2,得到商和余数。
- 将商再次除以 2,得到新的商和余数。
- 不断重复上述步骤,直到商为 0。
- 将每一步的余数从低位到高位依次排列,得到二进制表示。
下面是将十进制数 61 转换为二进制数的步骤:
- 61 ÷ 2 = 30 余 1
- 30 ÷ 2 = 15 余 0
- 15 ÷ 2 = 7 余 1
- 7 ÷ 2 = 3 余 1
- 3 ÷ 2 = 1 余 1
- 1 ÷ 2 = 0 余 1
将每一步的余数从低位到高位依次排列,得到 61 的二进制表示为 0011 1101或111101。
学习Go语言主要是多练,多找些代码段写写,不懂可以私聊咨询。
欢迎关注云尔Websites CSDN博客
相关文章:
运算符 - Go语言从入门到实战
运算符 - Go语言从入门到实战 算术运算符 假设A变量等于10,B变量等于20。 运算符描述实例相加A B 输出结果 30-相减A - B 输出结果 -10*相乘A * B 输出结果 200/相除B / A 输出结果 2%求余B % A 输出结果 0⾃增A 输出结果 11–⾃减A-- 输出结果 9 特性…...
jupyterlab开发环境最佳构建方式
文章目录 背景jupyterlab环境构建运行虚拟环境构建以及kernel映射验证总结 背景 从jupyter notebook切换到了jupyter lab. 这里记录一下本地环境的最佳构建方式. jupyter lab 安装在jupyterlab-local的anaconda 虚拟环境中.建立多个其他虚拟环境安装各种python包实现环境隔离,…...
Qt_C++读写NFC标签Ntag支持windows国产linux操作系统
本示例使用的发卡器:Android Linux RFID读写器NFC发卡器WEB可编程NDEF文本/智能海报/-淘宝网 (taobao.com) ntag2标签存储结构说明 #include "mainwindow.h" #include "./ui_mainwindow.h" #include <QDebug> #include "QLibrary&…...
Web开发-基础知识扫盲
目录 Web 服务器Web 服务器例子 MVC架构Web 项目运行过程负载均衡和反向代理持久化Java对象JPA Web 服务器 Web 服务器是一种计算机程序,它通过 HTTP 协议接收和响应客户端发送的请求。Web 服务器将 HTML、CSS、JavaScript 和其他资源文件发送给客户端,…...
SpringMVC 学习(四)RestFul 风格
5. RestFul 风格 5.1 简介 概念 Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。 功能 资源:互联网所有的事物都可以被抽象为…...
消息中间件相关知识
1、概述 消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka…...
JackJson多态
JsonTypeInfo 处理多态、序列化对象类型_赵丙双的博客-CSDN博客 JsonTypeInfo实现jackson的多态解析_MonkeyKing_sunyuhua的博客-CSDN博客 Java Jackson JsonTypeInfo 多态类型处理 - 简书 JsonTypeInfo 逻辑名称 JsonSubTypes、JsonTypeName_赵丙双的博客-CSDN博客...
孟晚舟最新发声!华为吹响人工智能的号角,发布“全面智能化”战略部署
原创 | 文 BFT机器人 1、华为孟晚舟新发声,华为发布“全面智能化”战略 上周三(9月30号)上午,华为全联接大会2023正式在上海举行,作为华为副董事长、轮值董事长、CFO的孟晚舟代表华为再次发声!在演讲上&am…...
open62541开发:添加sqlite3 历史数据库
历史数据库在OPCUA 应用中十分重要,例如OPCUA 网关和OPCUA 汇聚服务器中都需要历史数据库功能。但是open62541 协议栈中仅包含了基于内存的历史数据库,在实际应用中是不够的。本博文讨论open62541 中添加sqlite3 为基础的历史数据库若干问题。 借鉴 Gi…...
美国零售电商平台Target,值得入驻吗?如何入驻?
Target 是美国最大的零售商之一,在品牌出海为大势所趋的背景下,它在北美电商中的地位节节攀升。Target 商店在众多垂直领域提供各种价格实惠的自有品牌,吸引越来越多的跨境商家入驻,如美妆、家居、鞋服、日用百货等,随…...
docker freeswitch mysql驱动相关
1. docker环境 的freeswitch要连mysql数据库 2. centos版本:7.9 3. mysql版本:mysql8.0 4. odbc版本:适用以下命令查询 rpm -qa | grep -E "unixODBC|mysql-connector-odbc" mysql-connector-odbc-5.2.5-8.el7.x86_64 unixODB…...
Chrome iframe 跨域失败
原因: Chrome 稳定版禁用 document.domain setter 解决方案(4种): 1 使用低版本Chrome 缺点:无法保证用户浏览器版本。 2 浏览器设置: 浏览器地址栏输入 chrome://flags/#origin-agent-cluster-default然…...
【Vue】vue-cli一站式搭建SPA项目
🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Vue快速入门》。🎯🎯 &…...
CPP代码检查工具
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言CPP代码检查工具工具一:GCC编译器工具二:Cppcheck工具三:gbd调试器工具四:SonarCube嵌入式平台工具内存泄漏检查工具linux的cpu占用情况前言 认…...
在SpringBoot中利用Redis实现互斥锁
在SpringBoot中利用Redis实现互斥锁 基本知识 前提条件,有一个能够在Springboot中使用Redis的项目,或者能够直接开也行 为什么要实现互斥锁:当我们利用Redis存储热点数据时,突然就过期失效或者被删除了,导致大量请求同…...
vue3+eleement plus日历选择季度
<template><div class"el-quarter-wrap"><el-popover width"280" v-model"visible"><template #reference><el-input v-model"quarterDate" placeholder"请选择季度" clearable :prefix-icon&qu…...
实现动态业务规则的方法(Java)
实现动态业务规则的方法(Java) 企业信息化系统核心在于业务领域的概念模型及于此基础上复杂多变的业务规则,实现中通常抽象规则的接口方法,使用继承或策略等设计模式实现不同的业务规则的实现。领域的概念模型在特定领域是稳定的…...
leetcodeTOP100(26)两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 …...
performance_schema
插桩名称的最左边部分表示插桩类型,其余部分从左到右依次表示到特定的子系统 mysql> select * from performance_schema.setup_instruments where documentation is not null limit 5,5\G; *************************** 1. row ***************************NAME:…...
全新UI基于Thinkphp的最新自助打印系统/云打印小程序源码/附教程
这是一款全新的基于Thinkphp的最新自助打印系统,最新UI界面设计的云打印小程序源码,带有简单的教程。 下载地址:https://bbs.csdn.net/topics/617324130...
Halcon深度学习工具(DLT)安装与中文环境配置实战
1. Halcon DLT安装前的准备工作 第一次接触Halcon深度学习工具(DLT)时,我完全被各种专业术语搞晕了。后来才发现,只要做好前期准备,安装过程其实比想象中简单得多。首先需要确认的是你的Windows系统版本,DLT目前支持Windows 10和1…...
Applite:告别命令行!macOS软件管理的图形化终极解决方案
Applite:告别命令行!macOS软件管理的图形化终极解决方案 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite 还在为Homebrew复杂的命令行操作而头疼吗&…...
Taotoken用量看板如何帮助个人开发者管理月度预算
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken用量看板如何帮助个人开发者管理月度预算 对于独立工作的个人开发者而言,项目预算往往是决定技术选型与使用策…...
地下态势智能研判,拔高硐室深部安全透明管控等级技术白皮书
地下态势智能研判,拔高硐室深部安全透明管控等级技术白皮书 副标题:全要素三维动态重建井下场景,融合井下无感坐标解算、跨断面跨镜轨迹串联、身体指纹人员轨迹存档,井下风险前置感知、动态全程透明追溯 前言 矿山井下深部硐室与纵…...
高性能键盘映射与SOCD清理架构解析:解决游戏输入冲突的技术方案
高性能键盘映射与SOCD清理架构解析:解决游戏输入冲突的技术方案 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 在竞技游戏和高速动作游戏中,键盘输入的处理方式直接影响玩家的操作精度和…...
qmcdump:专业解决QQ音乐加密音频格式兼容性问题
qmcdump:专业解决QQ音乐加密音频格式兼容性问题 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 在数字音乐时…...
Unity游戏开发集成MCP协议:AI助手自动化操作指南
1. 项目概述:Unity游戏开发中的MCP革命如果你是一名Unity开发者,最近可能已经注意到一个名为“CoderGamester/mcp-unity”的项目在GitHub上悄然走红。这不仅仅是一个普通的插件或工具包,它代表了一种全新的工作流范式,旨在将大型语…...
实战指南:用UABEA高效解析Unity资源结构的5个关键要点
实战指南:用UABEA高效解析Unity资源结构的5个关键要点 【免费下载链接】UABEA c# uabe for newer versions of unity 项目地址: https://gitcode.com/gh_mirrors/ua/UABEA 在Unity开发的世界里,资源管理往往是项目优化中最棘手的一环。你是否曾经…...
从二维到三维:DIY LED视频立方体构建全攻略
1. 项目概述:从平面到立体的视觉革命几年前,当我第一次成功点亮一整面由32x32 RGB LED面板组成的视频墙时,那种由1024个像素点共同编织出的动态画面所带来的震撼,至今记忆犹新。但作为一个热衷于将技术推向边界的创作者࿰…...
三维重建下半场,拼的全是底层基建实力!
三维重建已从算法创新竞赛正式迈入基础设施比拼新阶段,主流技术路线逐步收敛,单纯算法红利见顶,行业竞争核心转向数据、算力、平台、生态等底层综合能力。当下竞争不再只比模型效果,而是聚焦四大核心基建维度:采集传感…...
