9.4 Go语言入门(运算符)

Go语言入门(运算符)

  • 目录
    • 三、运算符
      • 1. 算术运算符
      • 2. 关系运算符
      • 3. 逻辑运算符
      • 4. 位运算符
      • 5. 赋值运算符
      • 6. 其他运算符
      • 7. 运算符优先级

目录

Go 语言(Golang)是一种静态类型、编译型语言,由 Google 开发,专注于简洁性、并发和高效性。

下面是 Go 语言的基础语法讲解和代码示例。


上一篇:二、Go语言入门(变量声明和函数调用)


三、运算符

在 Go 语言中,运算符是用于执行各种操作的符号或关键字。运算符可以用于数值计算、比较操作、逻辑运算、位操作等。

1. 算术运算符

算术运算符用于执行基本的数学运算。

  • + :加法
  • - :减法
  • * :乘法
  • / :除法
  • % :取模
package mainimport "fmt"func main() {a := 10b := 3fmt.Println("a + b =", a + b) // 输出:13fmt.Println("a - b =", a - b) // 输出:7fmt.Println("a * b =", a * b) // 输出:30fmt.Println("a / b =", a / b) // 输出:3fmt.Println("a % b =", a % b) // 输出:1
}

2. 关系运算符

关系运算符用于比较两个值,返回布尔值。

  • == :等于
  • != :不等于
  • > :大于
  • < :小于
  • >= :大于等于
  • <= :小于等于
package mainimport "fmt"func main() {a := 10b := 20fmt.Println("a == b:", a == b) // 输出:falsefmt.Println("a != b:", a != b) // 输出:truefmt.Println("a > b:", a > b)   // 输出:falsefmt.Println("a < b:", a < b)   // 输出:truefmt.Println("a >= b:", a >= b) // 输出:falsefmt.Println("a <= b:", a <= b) // 输出:true
}

3. 逻辑运算符

逻辑运算符用于连接布尔表达式。

  • && :逻辑与(AND)
  • || :逻辑或(OR)
  • ! :逻辑非(NOT)
package mainimport "fmt"func main() {a := trueb := falsefmt.Println("a && b:", a && b) // 输出:falsefmt.Println("a || b:", a || b) // 输出:truefmt.Println("!a:", !a)         // 输出:falsefmt.Println("!b:", !b)         // 输出:true
}

4. 位运算符

位运算符用于对整数类型的位进行操作。

  • & :按位与
  • | :按位或
  • ^ :按位异或
  • &^ :按位清除(AND NOT)
  • << :左移
  • >> :右移
package mainimport "fmt"func main() {a := 10       // 二进制:1010b := 3        // 二进制:0011fmt.Println("a & b:", a & b)   // 输出:2  (二进制:0010)fmt.Println("a | b:", a | b)   // 输出:11 (二进制:1011)fmt.Println("a ^ b:", a ^ b)   // 输出:9  (二进制:1001)fmt.Println("a &^ b:", a &^ b) // 输出:8  (二进制:1000)fmt.Println("a << 1:", a << 1) // 输出:20 (二进制:10100)fmt.Println("a >> 1:", a >> 1) // 输出:5  (二进制:0101)
}

5. 赋值运算符

赋值运算符用于给变量赋值。

  • = :赋值
  • += :加法赋值
  • -= :减法赋值
  • *= :乘法赋值
  • /= :除法赋值
  • %= :取模赋值
  • <<= :左移赋值
  • >>= :右移赋值
  • &= :按位与赋值
  • |= :按位或赋值
  • ^= :按位异或赋值
  • &^= :按位清除赋值
package mainimport "fmt"func main() {var a int = 10a += 5   // 相当于 a = a + 5fmt.Println("a += 5:", a) // 输出:15a -= 3   // 相当于 a = a - 3fmt.Println("a -= 3:", a) // 输出:12a *= 2   // 相当于 a = a * 2fmt.Println("a *= 2:", a) // 输出:24a /= 4   // 相当于 a = a / 4fmt.Println("a /= 4:", a) // 输出:6a %= 3   // 相当于 a = a % 3fmt.Println("a %= 3:", a) // 输出:0a = 8a <<= 1  // 相当于 a = a << 1fmt.Println("a <<= 1:", a) // 输出:16a >>= 2  // 相当于 a = a >> 2fmt.Println("a >>= 2:", a) // 输出:4a &= 3   // 相当于 a = a & 3fmt.Println("a &= 3:", a) // 输出:0a |= 2   // 相当于 a = a | 2fmt.Println("a |= 2:", a) // 输出:2a ^= 3   // 相当于 a = a ^ 3fmt.Println("a ^= 3:", a) // 输出:1a &^= 2 // 相当于 a = a &^ 2fmt.Println("a &^= 2:", a) // 输出:1
}

6. 其他运算符

赋值运算符用于给变量赋值。

  • & :取地址
  • * :指针运算符
package mainimport "fmt"func main() {a := 10p := &a         // 取地址fmt.Println("Address of a:", p)fmt.Println("Value of *p:", *p) // 解引用
}

7. 运算符优先级

运算符的优先级决定了它们在表达式中计算的顺序。高优先级的运算符在低优先级的运算符之前执行。运算符的优先级如下,从高到低:

  1. * / % << >> & &^
  2. + - | ^
  3. == != < <= > >=
  4. &&
  5. ||

可以使用括号 () 来显式地指定计算顺序。

package mainimport "fmt"func main() {a := 10b := 3c := 2result := a + b * c    // 等同于 a + (b * c)fmt.Println(result)    // 输出:16result = (a + b) * cfmt.Println(result)    // 输出:26
}

通过理解和掌握这些运算符及其使用方法,可以有效地编写和调试 Go 语言代码。


下一篇:四、Go语言入门(条件语句和循环语句)


在这里插入图片描述

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

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

相关文章

【JAVA】Java如何使用Spring Boot进行Web服务开发

文章目录 前言一、函数解释二、代码实现三、总结 前言 在现代的微服务架构中&#xff0c;创建快速、可靠的Web服务已经成为一项基本技能。Spring Boot是一个出色的框架&#xff0c;它简化了Spring应用开发&#xff0c;使我们能够更快速地创建和部署Web服务。在这篇博客中&…

mysql支持的存储引擎有哪些

MySQL支持多种存储引擎,每种存储引擎都有其特定的用途和特点。以下是MySQL中常见的存储引擎: 1. InnoDB 特性: 支持事务和ACID属性行级锁定外键约束自动崩溃恢复MVCC(多版本并发控制)全文搜索(从MySQL 5.6开始)优点: 高并发性能数据完整性和安全性强自动恢复机制缺点:…

若依启动run-modules-system.bat报错问题解决方案

在启动run-modules-system.bat时遇到了一些问题,在网上搜索无果后,排查解决完毕 1.启动nacos时,报错如下 Error creating bean with name grpcClusterServer: Invocation of init method failed; nested exception is java.io.IOException: Failed to bind to address 0.0.0.0…

netty4 输出chunk

HTTP之Chunk HttpResponse response new DefaultHttpResponse(response.protocolVersion(), response.status()); HttpHeaders headers response.headers();// 设置transfer_encoding headers.set(HttpHeaderNames.TRANSFER_ENCODING, HttpHeaderValues.CHUNKED);ctx.write(…

Android 待办类应用提醒功能的实现及其问题

待办类应用作为一款提升工作效率的实用工具&#xff0c;在Android平台上深受用户喜爱。其核心功能之一便是提醒功能&#xff0c;帮助用户及时完成待办事项。 Android待办类应用的提醒功能看似简单&#xff0c;但涉及到多种系统机制和细节处理&#xff0c;需要开发者仔细考量和…

SQL实战 将学生信息进行 行转列输出

表countries 数据如下&#xff1a; namecontinentJaneAmericaPascalEuropeXiAsiaJackAmerica数据建表来源&#xff1a; SQL试题使得每个学生 按照姓名的字⺟顺序依次排列 在对应的⼤洲下⾯展示为如下的数据样式&#xff1a; namecontinentJane, JackAmericaXiAsiaPascalPasca…

Python开发 —— 对象type、object、class

1. "Python中一切皆为对象"的理解 在Python中&#xff0c;一切皆为对象的意思是指&#xff1a;无论是数字、字符串、函数、类、模块等任何数据类型&#xff0c;都可以被看做是一个对象。每个对象都具有自己的属性和方法&#xff0c;可以被操作和调用。 例如&#xff…

京东店铺商品列表API接口详解

随着电子商务的快速发展&#xff0c;越来越多的商家选择在京东这样的大型电商平台上开设店铺。为了帮助商家更高效地管理和展示商品&#xff0c;京东提供了一系列的API接口。本文将详细介绍京东店铺商品列表API接口&#xff0c;帮助开发者和商家更好地利用这一工具。 京东API概…

2022年全国职业院校技能大赛高职组“信息安全管理与评估”赛项第二阶段任务书

第二阶段竞赛项目试题 本文件为信息安全管理与评估项目竞赛-第二阶段试题&#xff0c;第二阶段内容包括&#xff1a;网络安全事件响应、数字取证调查和应用程序安全。 本次比赛时间为180分钟。 介绍 竞赛有固定的开始和结束时间&#xff0c;选手必须决定如何有效的分配…

回溯算法03(leetcode39/40/131)

参考资料&#xff1a; https://programmercarl.com/0039.%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C.html 39. 组合总和 题目描述&#xff1a; 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 …

linux--实时性优化

linux--实时性优化 1 介绍2 实时性需求3 代表性实时系统4 嵌入式系统嵌入式软件系统结构处理器时钟节拍多任务机制任务调度方式任务调度算法时间片调度算法优先级调度算法基于优先级的时间片调度算法 5 cyclictest 测试工具命令说明命令分析参数含义 6 linux 实时性改进某版本上…

四川汇烁面试总结

自我介绍项目介绍、 目录 1.jdk和jre的区别&#xff1f; 2.一段代码的执行流程&#xff1f; 3.接口与抽象类的区别&#xff1f; 4.ArrayList与LinkList的区别&#xff1f; 5.对HashMap的理解? 6.常见的异常&#xff1f; 7.throw 和 throws 有什么区别&#xff1f; 8.…

es和mongdb对比

本文参考博客: 【文档数据库】ES和MongoDB的对比 ES和MongoDB都能存储海量文档&#xff0c;都支持文档的搜索&#xff0c;很多功能上都是高度重合的&#xff0c;那为什么会出现如此相似的两个东西&#xff1f;他们各自的应用场景有什么不同&#xff1f;我其实也有这样的疑问&a…

04-Vue:ref获取页面节点--很简单

目录 前言在Vue中&#xff0c;通过 ref 属性获取DOM元素使用 ref 属性获取整个子组件&#xff08;父组件调用子组件的方法&#xff09; 前言 我们接着上一篇文章 03-02-Vue组件之间的传值 来讲。 下一篇文章 05-Vue路由 在Vue中&#xff0c;通过 ref 属性获取DOM元素 我们当然…

装机必备——Bandizip7.33安装教程

装机必备——Bandizip7.33安装教程 软件下载 软件名称&#xff1a;Bandizip7.33 软件语言&#xff1a;简体中文 软件大小&#xff1a;8.42M 系统要求&#xff1a;Windows7或更高&#xff0c; 64位操作系统 硬件要求&#xff1a;CPU2GHz &#xff0c;RAM4G或更高 下载通道①迅…

#学习方法#笔记

飞鸟写作是一个非常便捷的论文写作工具&#xff0c;不仅可以帮助用户高效地完成论文写作&#xff0c;还可以提供查重降重的功能&#xff0c;帮助用户确保论文的原创性。那么&#xff0c;飞鸟写作到底可靠吗&#xff1f;答案是肯定的。 首先&#xff0c;飞鸟写作提供的查重降重…

JS逆向之企名科技

文章目录 初步分析定位js编写完整代码参考文献初步分析 目标网址:企名科技 抓包分析,发现是post请求 请求代码如下: #!/usr/bin/env python3 # -*- coding: utf-8 -*- import requestsheaders = {Connection:

【LeetCode面试经典150题】226. 翻转二叉树

一、题目 226. 翻转二叉树 - 力扣&#xff08;LeetCode&#xff09;给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 二、思路 其实就是个二叉树遍历问题&#xff0c;只不过不是单纯的遍历&#xff0c;而是在遍历的同时进行元素的交换&a…

利用ChatGPT辅助数学建模竞赛:理清思路、解题技巧与实战经验

导言 数学建模竞赛是许多学生在学术领域追求卓越的重要途径之一。然而,竞赛题目的复杂性常常让人望而生畏。在这样的情况下,利用人工智能工具,如ChatGPT,可以极大地辅助我们快速理清思路、解题技巧与实战经验。本文将探讨如何利用ChatGPT在数学建模竞赛中取得更好的成绩,…

Android应用开发之AndroidManifest.xml

一.AndroidManifest.xml介绍 1.定义 AndroidManifest官方解释是应用清单&#xff08;manifest意思是货单&#xff09;&#xff0c;每个应用的根目录中都必须包含一个&#xff0c;并且文件名必须一模一样。 它是Android程序的全局配置文件&#xff0c;是每个 android程序中必须…