Go 语言学习之运算符

简介: Go 语言学习之运算符

01

算术运算符


算术运算符有加号(+)、减号(-)、乘号(*)、除号(/)、取余(%),我们声明两个变量 a 和 b,并分别赋值 10 和 5,通过代码,我们演示算术运算符的用法。

func main() {
  a := 10
  b := 5
  fmt.Println("a + b = ", a+b)
  fmt.Println("a - b = ", a-b)
  fmt.Println("a * b = ", a*b)
  fmt.Println("a / b = ", a/b)
  fmt.Println("a % b = ", a%b)
}


02

++ 和 --


自增和自减不是运算符,只能作为独立语句使用,不能用于表达式,不能放在变量名前面使用。通过代码,我们演示 ++ 和 -- 的用法。

func main() {
  a := 10
  b := 5
  a++
  b--
  fmt.Println("a++:", a)
  fmt.Println("b--:", b)


03

赋值运算符


为了简化表达式,与大多数语言相同,Go 语言也提供了一些赋值运算符,有等号(=)、加等(+=)、减等(-=)、乘等(*=)、除等(/*)、取余等(%=),通过代码,我们演示赋值运算符的用法。

func main() {
  aa := 50
  aa += 10
  fmt.Println("aa = ", aa)
  bb := 50
  bb -= 10
  fmt.Println("bb = ", bb)
  cc := 50
  cc *= 10
  fmt.Println("cc = ", cc)
  dd := 50
  dd /= 10
  fmt.Println("dd = ", dd)
  ff := 50
  ff %= 10
  fmt.Println("ff = ", ff)
}


04

关系运算符


关系运算符主要用于流程控制语句中,在 Go 语言中,关系运算符有大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于等于(==)和不等于(!=),通过代码,我们演示关系运算符的用法。

func main() {
  if a > 5 && b > 5 {
    fmt.Println("a > 5 且 b > 5")
  }
  if a > 5 || b > 5 {
    fmt.Println("a > 5 或 b > 5")
  }
  if a > 5 && b >= 5 {
    fmt.Println("a > 5 且 b >= 5")
  }
  if a == b {
    fmt.Println("a == b")
  }
  if a != b {
    fmt.Println("a != b")
  }
  boolean := false
  if !boolean {
    fmt.Println("非假既真")
  }
}


05

逻辑运算符


逻辑运算符,同样主要用于流程控制语句中,在 Go 语言中,逻辑运算符有且(&&)、或(||)、非(!),代码演示同上面的关系运算符代码。


06

& 和 *


取地址符(&和指针运算符(*),不是所有对象都能进行取地址操作,但是变量是能正确返回地址。指针运算符在等号左边时,可以更新目标对象,在等号右边时,可以获取目标对象。通过代码,我们演示取地址符和指针运算符的用法。

func main() {
  x := 50
  y := &x
  *y++
  z := *y
  fmt.Println("y = ", y)
  fmt.Println("x = ", x)
  fmt.Println("z = ", z)
}

07

位运算符


位运算符是对整数在内存中的二进制位进行操作。因为篇幅原因,本文我们不对位运算符做过多的介绍,在工作中,个人建议尽量少用或不用位运算符,原因是代码可读性不好。如果你对位运算符感兴趣,可自行查阅相关资料。


08

优先级


最后,我们来介绍一下运算符的优先级,一元运算符的优先级最高,二元运算符的优先级分五个级别,从高往低分别是:

*
/
%
<<
>> &
&^
+
-
|
^



==
!=
<
<= >
>=

&&






||






相同优先级的二元运算符,从左往右依次计算。此外,我们还可以使用小括号提升某个表达式中运算符的优先级。


完整代码:

640.png


输出结果:

a + b =  15
a - b =  5
a * b =  50
a / b =  2
a % b =  0
a++: 11
b--: 4
aa =  60
bb =  40
cc =  500
dd =  5
ff =  0
a > 5 或 b > 5
a != b
非假既真
y =  0xc0000b4070
x =  51
z =  51





目录
相关文章
|
9天前
|
存储 JSON 监控
Viper,一个Go语言配置管理神器!
Viper 是一个功能强大的 Go 语言配置管理库,支持从多种来源读取配置,包括文件、环境变量、远程配置中心等。本文详细介绍了 Viper 的核心特性和使用方法,包括从本地 YAML 文件和 Consul 远程配置中心读取配置的示例。Viper 的多来源配置、动态配置和轻松集成特性使其成为管理复杂应用配置的理想选择。
30 2
|
8天前
|
Go 索引
go语言中的循环语句
【11月更文挑战第4天】
19 2
|
8天前
|
Go C++
go语言中的条件语句
【11月更文挑战第4天】
21 2
|
13天前
|
Ubuntu 编译器 Linux
go语言中SQLite3驱动安装
【11月更文挑战第2天】
37 7
|
13天前
|
关系型数据库 Go 网络安全
go语言中PostgreSQL驱动安装
【11月更文挑战第2天】
48 5
|
12天前
|
安全 Go
用 Zap 轻松搞定 Go 语言中的结构化日志
在现代应用程序开发中,日志记录至关重要。Go 语言中有许多日志库,而 Zap 因其高性能和灵活性脱颖而出。本文详细介绍如何在 Go 项目中使用 Zap 进行结构化日志记录,并展示如何定制日志输出,满足生产环境需求。通过基础示例、SugaredLogger 的便捷使用以及自定义日志配置,帮助你在实际开发中高效管理日志。
32 1
|
12天前
|
程序员 Go
go语言中的控制结构
【11月更文挑战第3天】
88 58
|
6天前
|
Go
go语言中的continue 语句
go语言中的continue 语句
16 3
|
11天前
|
监控 Go API
Go语言在微服务架构中的应用实践
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出,成为构建微服务的理想选择。本文将探讨Go语言在微服务架构中的应用实践,包括Go语言的特性如何适应微服务架构的需求,以及在实际开发中如何利用Go语言的特性来提高服务的性能和可维护性。我们将通过一个具体的案例分析,展示Go语言在微服务开发中的优势,并讨论在实际应用中可能遇到的挑战和解决方案。
|
7天前
|
安全 Go 调度
探索Go语言的并发模型:goroutine与channel
在这个快节奏的技术世界中,Go语言以其简洁的并发模型脱颖而出。本文将带你深入了解Go语言的goroutine和channel,这两个核心特性如何协同工作,以实现高效、简洁的并发编程。
下一篇
无影云桌面