Go语言中的运算符

news2024/10/5 19:09:41

Golang 内置的运算符

算术运算符
关系运算符
逻辑运算符
位运算符(不常用)
赋值运算符

  算数运算符

运算符描述
+相加
-相减
*相乘
/相除
%求余
	a := 10
	b := 9
	fmt.Printf("a+b的值为%v\na-b的值为%v\na*b的值为%v\n",a+b,a-b,a*b)

除法注意:如果运算的数都是整数,那么除后,去掉小数部分,保留整数部分 

	a := 15
	b := 5
	fmt.Println(a / b)

	var c float32 = 9.9
	d := 3
	fmt.Println(c / float32(d))

	var c0  = 9.9
	d0 := 3.0
	fmt.Println(c0 / d0)

 

取余注意    余数=被除数-(被除数/除数)*除数 

	var a = 10
	var b = 3
	fmt.Println(a % b) //1

	fmt.Println(-10 % 3) // - 10 - (-10/3)*3  =-1

	fmt.Println(10 % -3) // 10-(10/-3)*-3=1

 注意: ++(自增)和--(自减)在Go语言中是单独的语句,并不是运算符。

 且在 golang 中没有前++,为 错误写法

var i int = 8

        var a int

        a = i++ //错误,i++只能独立使用

        a = i-- //错误, i--只能独立使用

        fmt.Ptintln(a)
	var a = 12
	++a  //错误写法
	fmt.Println(a)

 正确的写法

	var a = 1
	a++
	a--
	fmt.Println(a)

 

 

关系运算符 

运算符描述
==检查两个值是否相等,如果相等返回 True 否则返回 False。
!=检查两个值是否不相等,如果不相等返回 True 否则返回 False。
>检查左边值是否大于右边值,如果是返回 True 否则返回 False。
>=检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。
<检查左边值是否小于右边值,如果是返回 True 否则返回 False。
<=检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。
	a := 10
	b := 12
	fmt.Println(a == b)
	fmt.Println(a != b)
	fmt.Println(a > b)
	fmt.Println(a < b)
	fmt.Println(a >= b)
	fmt.Println(a <= b)

	var a1 = 9
	var a2 = 14
	flag := a1 > a2
	if flag {
		fmt.Println("a1>a2")
	}else{
		fmt.Println("返回为空")
	}

	a0 := 11
	b0 :=20
	flog := a0 < b0
	if flog {
		fmt.Println("a0<b0")

	}else{
		fmt.Println("a0 > b0")
	}

 

逻辑运算符 

运算符描述
&&逻辑 AND 运算符。 如果两边的操作数都是 True,则为 True,否则为 False。
ll逻辑 OR 运算符。 如果两边的操作数有一个 True,则为 True,否则为 False。
!逻辑 NOT 运算符。 如果条件为 True,则为 False,否则为 True。

 逻辑 AND 运算符

var a = 18
var b = 8
fmt.Println(a > 10 && b < 10) 
fmt.Println(a > 24 && b < 10) 
fmt.Println(a > 5 && b < 6)   
fmt.Println(a == 5 && b < 6) 

 

 逻辑 OR 运算符

	var a = 23
	var b = 8
	fmt.Println(a > 10 || b < 10) 
	fmt.Println(a > 24 || b < 10) 
	fmt.Println(a > 5 || b < 6)  
	fmt.Println(a == 5 || b < 6)  

  

 逻辑 NOT 运算符

	flag := false
	fmt.Println(!flag)

 

逻辑与和逻辑或短路

逻辑与:前面是false后面就不会执行

//定义一个方法
func test() bool {
	fmt.Println("方法执行了呢")
	return true
}
	var a = 10
	if a > 9 && test() {
		fmt.Println("执行")
	}

 

	var a = 10
	if a > 11 && test() {
		fmt.Println("执行")
	}else{
		fmt.Println("比错了奥,有问题了")
	}

 

逻辑或:前面是true后面就不会执行

	var a = 10
	if a > 11 || test() {
		fmt.Println("执行")
	}

	var a = 10
	if a < 11 || test() {
		fmt.Println("执行")
	}

 

赋值运算符

运算符描述
=简单的赋值运算符,将一个表达式的值赋给一个左值
+=相加后再赋值
-=相减后再赋值
*=相乘后再赋值
/=相除后再赋值
%=求余后再赋值
<<=左移后赋值
>>=右移后赋值
&=按位与后赋值
l=按位或后赋值
^=按位异或后赋值

 

package main
import "fmt"
func main(){
        var num1 int = 10
        fmt.Println(num1)
        var num2 int = (10 + 20) % 3 + 3 - 7   //=右侧的值运算清楚后,再赋值给=的左侧
        fmt.Println(num2)
        var num3 int = 10
        num3 += 20 //等价num3 = num3 + 20;
        fmt.Println(num3)
}
	var a = 20
	a = 21
	fmt.Println(a)
	

	// var a = 23 + 2
	// fmt.Println(a)

	// var a = 10
	// b := a
	// fmt.Println(b)

	// var a = 10
	// b := a + 2
	// fmt.Println(b)

	// var a = 10
	// a += 3 // 等价于a=a+3
	// fmt.Println(a)

	// var a = 10
	// a = a + 3
	// fmt.Println(a)

	// var a = 10
	// a -= 3 //a=a-3
	// fmt.Println(a)

	// var a = 10
	// a *= 3 //a=a*3
	// fmt.Println(a)

	// var a = 10
	// a /= 3         // a=a/3
	// fmt.Println(a) //结果:3

	// var a float64 = 10
	// a /= 3         // a=a/3
	// fmt.Println(a) //结果:3.3333333333333335

	// var a = 10
	// a %= 3         // a=a%3
	// fmt.Println(a) //1

位运算符(了解即可;涉及二进制间转换)

位运算符对整数在内存中的二进制位进行操作。

运算符描述
&参与运算的两数各对应的二进位相与。(两位均为1才为1)
l参与运算的两数各对应的二进位相或。(两位有一个为1就为1)
^参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。(两位不一样则为1)
<<左移n位就是乘以2的n次方。“a<<b”是把a的各二进位全部左移b位,高位丢弃,低位补0。
>>右移n位就是除以2的n次方。“a>>b”是把a的各二进位全部右移b位。
    var a = 5 //  101
	var b = 2 //  010
	fmt.Println("a&b=", a&b)   // 000   值0
	fmt.Println("a|b=", a|b)   // 111  值7
	fmt.Println("a^b=", a^b)   // 111  值7
	fmt.Println("a<<b=", a<<b) // 10100  值20   5*2的2次方
	fmt.Println("a>>b=", a>>b) // 值1    5/2的2次方

 位运算符是十转二进制后,竖着相对比

最后输出的值为二进制还需要转为十进制输出

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/727465.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp:粘性布局(吸顶:u-sticky)生效的注意事项

使用场景&#xff1a;要求首次渲染时不需要固定在页面顶部&#xff08;正常布局&#xff09;&#xff0c;当随着页面的滚动&#xff0c;需要将起固定在页面顶部&#xff0c;会使用到可能的有&#xff1a;tab、搜索框、导航、标题、头图…工具&#xff1a;用了uview2的组件<u…

手撕spring04源码(A依赖B)

概述 本章节优化上一章节通过构造方法实例化对象属性填充问题的痛点&#xff0c;并解决A bean依赖B bean的问题 整体设计 知识点补充 spring生命周期 在Spring中&#xff0c;Bean的生命周期包括实例化、初始化和销毁三个阶段。下面是对每个阶段的解释&#xff1a; 实例化…

河南企业级泛域名SSL证书

电脑的普及让网络可以快速发展&#xff0c;紧随网络的发展各个CA认证机构推出了泛域名SSL证书、多域名SSL证书等可以用一张SSL证书保护多个域名网站的SSL数字证书。泛域名SSL证书也叫通配符SSL证书&#xff0c;可以用一张SSL证书保护主域名以及主域名下所有的子域名网站&#x…

NR PDCP(三) data transfer

这篇看下PDCP的data transfer过程&#xff0c;如NR RLC(三) TM and UM mode所述&#xff0c;在UL grant充足的情况下&#xff0c;UM RLC 一直在传输完整的RLC SDU&#xff0c;通过log只能知道UE有在收发data&#xff0c;并不能像LTE似的通过SN去判断UE DL data是否有序接收以及…

平板触控笔要原装的吗?apple pencil的平替笔推荐

如今的电容笔种类越来越多&#xff0c;相信不少人都会在挑选电容笔中踩过坑&#xff0c;例如书写频繁断触&#xff0c;防误触失灵&#xff0c;续航能力欠佳等问题。这样的坑本人也是踩过不少&#xff0c;于是&#xff0c;我决定为大家出一期电容笔详细测评&#xff0c;特意地去…

从程序员的角度看待算法的学习与研究

一&#xff1a;引言 算法的重要性和应用场景&#xff1a; 提高效率&#xff1a;算法可以帮助我们设计和实现高效的解决方案&#xff0c;在有限的资源下&#xff0c;提高计算机程序或系统的执行速度和效率。解决复杂问题&#xff1a;算法可以提供有效的解决方案来解决各种复杂问…

有PMP证书了再考CSPM有必要吗?

先说答案&#xff1a;有必要 首先介绍一下什么是CSPM cspm中文名字是项目管理专业人员能力等级评价&#xff0c;是由中国标准化协会&#xff08;CAS&#xff09;组织开展的&#xff0c;它符合国务院发布的《国家标准化发展纲要》&#xff0c;纲要中明确提出要构建多层次从业人…

【mysql】mysql登录密码忘记重置方法,解决password针对mysql8.0及以上版本失效问题

问题场景&#xff1a; 提示&#xff1a;mysql密码忘记 本人场景&#xff1a;mysql装了很久&#xff0c;一段时间未使用&#xff0c;再次打开发现登录不了了&#xff0c;于是想修改密码。 解决方案&#xff1a; 1、找到自己安装mysql的文件夹。删掉其中的data文件夹&#xff…

Python反爬取访问验证处理

最近爬取数据的时候&#xff0c;遇到反爬取限制&#xff1a;即当访问一定次数后会弹出访问验证如下图所示&#xff1a; 这种验证方式没找到绕过去的方法&#xff0c;那就只能用最笨的办法&#xff0c;弹出验证框后&#xff0c;将等待时间延长&#xff0c;然后手动点击验证。代码…

数据结构--线索二叉树的概念

数据结构–线索二叉树的概念 二叉树的中序遍历序列 void InOrder(BiTree T) {if (T ! NULL){InOrder(T->lchild); //递归遍历左子树visit(T); //访问根结点InOrder(T->rchild); //递归遍历右子树} }中序遍历序列:D G B E A F C ①如何找到指定结点p在中序遍历序列中的前…

Oracle-奇怪的expdp备份报错LPX-00217

问题背景: 接用户报障&#xff0c;数据库每天晚上正常的expdp备份&#xff0c;从2天前开始出现奇怪的备份报错LPX-00217: invalid character 3 问题分析: 检查expdp备份的日志&#xff0c;从2天前晚上开始的备份均出现LPX-00217: invalid character 3的报错&#xff0c;报错均…

CentOS7在线安装MySQL新手小白教程

1、下载并安装MySQL官方的 Yum Repository wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm使用上面的命令下载安装用的Yum Repository yum -y install mysql57-community-release-el7-10.noarch.rpm开始安装MySQL服务器 yum -y install …

C++学习 数组

目录 数组 一维数组 数组名 案例&#xff1a;冒泡排序 二维数组 数组名 数组 数组就是一个集合&#xff0c;里面存放了相同类型的数据元素。 下面的数字对应为数组的下标(索引)&#xff0c;可以看到索引范围为0~数组长度-1 特点&#xff1a; 数组中数据元素的数据类型相同。…

github软件包-golang,不同版本的使用--推荐

一、golang中获取github软件包&#xff0c;不同版本&#xff08;V1,V2...&#xff09;的使用&#xff1a; github中如何使用&#xff1a; golang语言使用的github的软件包&#xff0c;有时候不同版本如何切换&#xff0c;特别是有的版本变化比较多&#xff0c;例如在v1中没有…

Go语言程序设计(一)Go语言概述及基础

一、前言 为了尽可能获得最佳的运行性能&#xff0c;Go语言被设计成一门静态编译型的语言&#xff0c;而不是动态解释型的。Go语言的编译速度非常快&#xff0c;明显的要快过其他同类语言&#xff0c;比如C和C。 Go语言的官方编译器被称为gc。 Go语言具有以下几个特点&#x…

(css)盒子的阴影

(css)盒子的阴影 效果&#xff1a; 代码&#xff1a; box-shadow: inset 0 0 50px 2px #74eaff;解决参考&#xff1a;https://blog.csdn.net/weixin_52984349/article/details/125803515

docker部署私有化镜像仓库

为什么要部署私有化&#xff1a; 1.防止镜像因为内存不够被驱逐 2.方便内网服务器复用 部署步骤&#xff1a; docker pull registry // 如果嫌麻烦&#xff0c;也可以去我的资源里面去拿现成的&#xff0c;docker load -i registry.tar 到自己的docker里。"""如…

Django搭建图书管理系统02:创建并配置APP功能模块

&#x1f4c1; 创建APP **Django中的APP&#xff08;应用程序&#xff09;是将功能模块组织在一起的单位&#xff0c;每个APP通常负责处理特定的功能。**开发者可以将不同功能的模块放在不同的app中, 方便代码的复用。app就是项目的基石&#xff0c;因此开发博客的第一步就是创…

[C++] C++11新特性介绍 分析(2): lambda表达式、function包装器、bind()接口

文章目录 [toc] C11**lambda 表达式**lambda 表达式lambda 表达式底层 包装器 functionfunction 包装普通可调用对象function 包装类内成员函数 bind()bind() 使用 及 功能1. 调整参数位置2. 绑定参数 C11 上一篇介绍C11常用的新特性只介绍了一部分. 本篇文章继续分析介绍. l…

Linux简介与安装

文章目录 前言一、Linux简介1.Linux是什么2.学完Linux后能做什么 二、Linux安装1.安装方式介绍2.安装Linux3.网卡设置4.安装SSH连接工具5. Linux目录结构 总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方便日后回顾。当然&…