go破冰之旅·6·go中各种运算符(一)

news/2024/11/20 23:18:18/

一次5-10分钟即可搞定,实用+效率!

回顾一下,上文:go破冰之旅·5·常量、变量、数据类型

提到了go中常量、变量、数据类型这些基础元素,本文来看看go中各种运算符是怎么玩的。

因篇幅及时长关系,本文对算术运算符、赋值运算符、逻辑运算符做了详细介绍和常用用法及特殊案例进行了列举,其余在下一篇中进行介绍。

算术运算符

下面我们以具有特点的示例来对算术运算符进行说明和分析。

import "fmt"func main() {var a, b, c, d inta, b, c, d = 2, 1, 4, 7var (e = 9.9f = 1.1g = 1.11)// 常用四则运算 // fmt.Printf是一个通用打印函数 %v用来做通用参数占位打印fmt.Printf("%v + %v = %v\n", a, b, a+b)fmt.Printf("%v - %v = %v\n", a, b, a-b)fmt.Printf("%v * %v = %v\n", a, b, a*b)fmt.Printf("%v * %v = %v\n", e, f, e*f)fmt.Printf("%v / %v = %v\n", a, b, a/b)fmt.Printf("%v / %v = %v\n", a, c, a/c)fmt.Printf("%v / %v = %v\n", a, d, a/d)fmt.Printf("%v / %v = %v\n", e, f, e/f)fmt.Printf("%v / %v = %v\n", e, g, e/g)fmt.Printf("%v %% %v = %v\n", d, a, d%a) // 求余// 自增和自减a++fmt.Printf("a = %v\n", a)d--fmt.Printf("d = %v\n", d)
}

speed running:

2 + 1 = 32 - 1 = 12 * 1 = 29.9 * 1.1 = 10.892 / 1 = 22 / 4 = 02 / 7 = 09.9 / 1.1 = 99.9 / 1.11 = 8.918918918918927 % 2 = 1a = 3d = 6

可以看出,大多都是我们的预期结果,然而部分结构好像不对?来看看“不对”的行:

2 / 4 = 0

2 / 7 = 0

2除以4我们正常想要的当然是0.5,2除以7=0.2857.....是一串小数,它两的共同特点就是所得结果带有小数点,还有结果可以继续格式化的:

9.9 / 1.11 = 8.91891891891892

我们平时当然需要的是经过精确小数点之后的数,而不是一长串小数点后位数,对如上的情况在做运算时需要进行处理,可移步:go两数相除分析   

go中string、float、int等常见类型的转换可移步:go中常见基本类型数值转换方法

话说回来,如果你的功能中2 / 4 需要结果是0的情况,那么就要熟悉此算法的规则,就不需要过度处理。

赋值运算符

尽量避免过多的文字,同样我们直接上代码,在代码中直接直观的看到你想根据基本规则要翻译成的“结果表格”:

	// = 最常用的赋值预算符a, b := 1, 2 // 将1和2分别赋值给a和bc := a + b   // 新创建变量c,并将a+b的值赋给cfmt.Printf("c = %v\n", c)   // 3// += 求和后再赋值、-= 相减后再赋值、*= 相除后再赋值、/= 相除后再赋值、%= 求余后再赋值a += 1 // 相当于a = a+1fmt.Printf("a = %v\n", a)   // 2b -= 1 // 相当于b = b-1fmt.Printf("b = %v\n", b)   // 1a *= b // 相当于a = a*bfmt.Printf("a = %v\n", a)   // 2a /= 2 // 相当于a = a/2fmt.Printf("a = %v\n", a)   // 1c %= 2 // 相当于c = c%2fmt.Printf("c = %v\n", c)   // 1

逻辑运算符

所谓“逻辑运算符”,就是我们常见的“与”、“或”、“非”,也即“AND”、“OR”、“NOT”,对应在go中的关键符号分别是:&&、||、!

	a, b := false, true // a、b分别被设置为“假”、“真”var c bool          // 声明一个布尔类型的c,默认为bool类型的零值,也就是falsevar d = true// &&:两个都为真结果才为真//fmt.Printf("%v", a&b) // 注意,单个&表示取址,a&b是不成立的,会提示:Invalid operation: a&b (operator & is not defined on bool)fmt.Printf("a && b = %v\n", a && b)fmt.Printf("a && c = %v\n", a && c)fmt.Printf("b && d = %v\n", b && d)// ||:有一个为真结果就是真fmt.Printf("a || b = %v\n", a || b)fmt.Printf("a || c = %v\n", a || c)fmt.Printf("b || d = %v\n", b || d)// 结果求反运算fmt.Printf("!(a || b) = %v\n", !(a || b))fmt.Printf("!(a || c) = %v\n", !(a || c))fmt.Printf("!(b || d) = %v\n", !(b || d))fmt.Printf("!b = %v\n", !b) // 对b求反,值为false// 多个逻辑运算符,依次运算即可,如有括号,先算括号fmt.Printf("a || b || d = %v\n", a || b || d)fmt.Printf("a || c || d = %v\n", a || c || d)fmt.Printf("a || b && d = %v\n", a || b && d)fmt.Printf("a && b && d = %v\n", a && b && d)fmt.Printf("a || (b && d) = %v\n", a || (b && d))

speed running:

a && b = false
a && c = false
b && d = true
a || b = true
a || c = false
b || d = true
!(a || b) = false
!(a || c) = true
!(b || d) = false
!b = false
a || b || d = true
a || c || d = true
a || b && d = true
a && b && d = false
a || (b && d) = true

这次先到这里,下文继续哦!


http://www.ppmy.cn/news/54053.html

相关文章

学生无线耳机哪款好?两百左右适合学生党的无线耳机推荐

学生无线耳机哪款好?现如今,学生党也成为了蓝牙耳机的主要用户群体之一。接下来,我来给学生群体推荐几款两百左右的无线耳机,一起来看看吧。 一、南卡小音舱Lite2蓝牙耳机 参考价:299 南卡小音舱的音质和佩戴体验都在…

ChatGPT 目前到底能帮助我们程序员做什么?

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享博主 🐋 希望大家多多支持一下, 我们一起进步!😄 🏅 如果文章对你有帮助的话,欢迎评论 💬点赞&#x1…

视频文件切片

1.为什么网络点播系统使用m3u8更有优势?为何点播要用M3U8来搞?存成一个文件不更好吗? 一个MP4文件可能几百M或几个G,如果读取整个MP4文件的信息并且需要下载一段内容,首次打开播放超慢(加载时间长)。如果把…

asp.net个人信息管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net个人信息管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语言 开发 asp.net个人信息管理系统VS开发s…

【C++】面向对象

文章目录 3.1 类与对象3.1.1 类成员的访问控制3.1.2 类的成员函数对象的访问方式成员函数的实现内联成员函数 3.1.3 构造函数复制构造函数调用复制构造函数的三种情况深复制与浅复制? 析构函数类的组合 3.1.4 前向引用声明3.1.5 结构体与类对比3.1.6 UML类图属性表示…

Linux系统编程学习 NO.1 ——操作系统的历史发展

什么是操作系统? 首先,需要明白一个概念操作系统的本质是系统软件,我们平时在电脑上的界面就是一种图形化的操作系统界面。界面上通常安装可执行应用程序如QQ,wps等等,这些应用程序被称为应用软件。大家买的电脑其实是…

如何从DDOS攻击中恢复

分析攻击 一旦攻击结束,尝试尽可能详细地分析它。 您可以从您的安全提供商或您的内部网络和应用程序系统日志中获取大部分此类信息。 要问的一些关键问题包括: 哪些资产遭到攻击?它是针对您的整个网络,还是针对特定的服务器或…

大模型竞争加剧,国内外 AI 监管进一步升级

随着人工智能技术的不断发展,大模型已成为当下最热门的话题之一。不仅国内外的科技公司都在积极投入研发,各国政府也在加大监管力度,以确保人工智能技术的安全和可持续发展。本文将从三个层次分别探讨大模型的定义和热度、国内外AI监管的现状…