Go语言学习之运算符使用详解

目录
  • 1、算术运算符
  • 2、关系运算符
  • 3、逻辑运算符
  • 4、位运算符
  • 5、赋值运算符
  • 6、特殊运算符

1、算术运算符

很常规,和java一样。

样例代码如下

// 算术运算符
func base() {
	a := 1
	b := 20
	c := 31
	d := -1
	fmt.Printf(" + -> %d\n", a+b)
	fmt.Printf(" - -> %d\n", b-a)
	fmt.Printf(" * -> %d\n", b*d)
	fmt.Printf(" / -> %d\n", c/b)
	fmt.Printf(" %% -> %d\n", c%b)
	a++
	fmt.Printf("++ -> %d\n", a)
	a--
	fmt.Printf("++ -> %d\n", a)
}

执行结果

+ -> 21
 - -> 19 
 * -> -20 
 / -> 1
 % -> 11
++ -> 2 
++ -> 1

2、关系运算符

这部分也很常规,有:"==","!=",">","<",">=","<="。

样例代码如下

// 关系运算符
func relation() {
	a := 1
	b := 3
	c := 5
	d := 5
	fmt.Printf("== -> %v\n", a == b)
	fmt.Printf("!= -> %v\n", a != c)
	fmt.Printf("> -> %v\n", b > a)
	fmt.Printf("< -> %v\n", b < d)
	fmt.Printf(">= -> %v\n", c >= d)
	fmt.Printf("<= -> %v\n", c <= a)
}

执行结果

== -> false
!= -> true
> -> true
< -> true
>= -> true
<= -> false

3、逻辑运算符

和java基本类似,有:"&&","||","!"。逻辑优先级也一样。

样例代码如下

//逻辑运算符
func logic() {
	A := true
	B := false
	fmt.Printf("&& -> %v\n", A && B)
	fmt.Printf("|| -> %v\n", A || B)
	fmt.Printf("复合 -> %v\n", (A || B) && !(A && A))
}

执行结果

&& -> false
|| -> true
复合 -> false

4、位运算符

主要有与运算、或运算、异或运算、左移、右移。

样例代码如下:

// 位运算
func bit_operation() {
	var a uint = 50                  /* 00110010 */
	var b uint = 10                  /* 00001010 */
	fmt.Printf("与& -> %d\n", a&b)    /* 00000010 */
	fmt.Printf("或| -> %d\n", a|b)    /* 00111010 */
	fmt.Printf("异或^ -> %d\n", a^b)   /* 00111000 */
	fmt.Printf("左移<< -> %d\n", a<<2) /* 11001000 */
	fmt.Printf("右移>> -> %d\n", a>>2) /* 00001100 */
}

执行结果

与& -> 2
或| -> 58
异或^ -> 56
左移<< -> 200
右移>> -> 12

5、赋值运算符

除了可以算术运算后赋值,也可以位运算后赋值。

样例代码如下:

// 赋值运算符
func assignment() {
	var a int = 50 /* 00110010 */
	var b int
	b = a
	fmt.Printf("= -> %d\n", b)
	b += a
	fmt.Printf("+= -> %d\n", b)
	b -= a
	fmt.Printf("-= -> %d\n", b)
	b *= a
	fmt.Printf("*= -> %d\n", b)
	b /= a
	fmt.Printf("/= -> %d\n", b)
	b = 50
	b <<= 2
	fmt.Printf("<<= -> %d\n", b)
	b >>= 2
	fmt.Printf(">>= -> %d\n", b)
	b &= 2
	fmt.Printf("&= -> %d\n", b)
	b |= 2
	fmt.Printf("|= -> %d\n", b)
	b ^= 2
	fmt.Printf("^= -> %d\n", b)
}

执行结果

= -> 50
+= -> 100
-= -> 50
*= -> 2500
/= -> 50
<<= -> 200
>>= -> 50
&= -> 2
|= -> 2
^= -> 0

6、特殊运算符

go语言可以使用&来表示变量存储地址,*来表示指针变量。

样例代码如下:

//特殊运算符
func special() {
	var a int = 1
	var ptr int
	var ptr1 *int

	ptr = a
	ptr1 = &a

	fmt.Printf("1 -> ptr=%d ,ptr1=%d\n", ptr, *ptr1)
	a = 100
	fmt.Printf("2 -> ptr=%d ,ptr1=%d\n", ptr, *ptr1)
}

执行结果

1 -> ptr=1 ,ptr1=1
2 -> ptr=1 ,ptr1=100

到此这篇关于Go语言学习之运算符使用详解的文章就介绍到这了,更多相关Go运算符内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 手把手带你走进Go语言之运算符解析

    目录 概述 Go 运算符 算术运算符 关系运算符 逻辑运算符 赋值运算符 概述 Golang 是一个跨平台的新生编程语言. 今天小白就带大家一起携手走进 Golang 的世界. Go 运算符 运算符 (operator) 可以帮助我们在程序中执行数学或逻辑运算. Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 算术运算符 运算符 描述 + 相加 - 相减 * 相乘 / 相除 % 取余 ++ 自增 – 自减 例子: package main import "f

  • Golang 运算符及位运算详解

    什么是运算符? 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.例如:2+3,其操作数是2和3,而运算符则是"+". 在vb2005中运算符大致可以分为5种类型:算术运算符.位运算符. 关系运算符.赋值运算符.逻辑运算符. 算数运算符 运算符 描述 + 相加 - 相减 * 相乘 / 相除 % 求余 注意: ++(自增)和--(自减)在Go语言中是单独的语句,并不是运算符. func main() { a, b := 3,4 fmt.Printf("a 加 b

  • Go语言运算符案例讲解

    算数运算符 算数运算符和C语言几乎一样 运算符 描述 实例 + 相加 A + B - 相减 A - B * 相乘 A * B / 相除 B / A % 求余 B % A ++ 自增 A++ – 自减 A– 注意点: 只有相同类型的数据才能进行运算 package main import "fmt" int main(){ var num1 int32 = 10 //var num2 int64 = num1 // 类型不同不能进行赋值运算 var num2 int64 = int64(

  • Go语言学习之运算符使用详解

    目录 1.算术运算符 2.关系运算符 3.逻辑运算符 4.位运算符 5.赋值运算符 6.特殊运算符 1.算术运算符 很常规,和java一样. 样例代码如下 // 算术运算符 func base() { a := 1 b := 20 c := 31 d := -1 fmt.Printf(" + -> %d\n", a+b) fmt.Printf(" - -> %d\n", b-a) fmt.Printf(" * -> %d\n",

  • Go语言学习之文件操作方法详解

    目录 引言 1. 打开和关闭文件 2. 读取文件 2.1 defer 语句 2.2 手动宕机处理 2.3 打开文件并获取内容 2.4 bufio 读取文件 2.5 ioutil 读取文件 2.6 读取奇偶行内容 3. 写入文件 3.1 os.OpenFile() 函数 3.2 Write 和 WriteString 方式写入 3.3 bufio.NewWriter 方式写入 3.4 ioutil.WriteFile 方式写入 引言 计算机的文件是存储再外部介质(硬盘)上的数据集合,文件分为文本文

  • Go语言学习之WaitGroup用法详解

    目录 前言 小试牛刀 总览 底层实现 结构体 Add Done Wait 易错点 总结 前言 在前面的文章中,我们使用过 WaitGroup 进行任务编排,Go语言中的 WaitGroup 和 Java 中的 CyclicBarrier.CountDownLatch 非常类似.比如我们有一个主任务在执行,执行到某一点时需要并行执行三个子任务,并且需要等到三个子任务都执行完后,再继续执行主任务.那我们就需要设置一个检查点,使主任务一直阻塞在这,等三个子任务执行完后再放行. 说明:本文中的示例,均是

  • C语言学习之柔性数组详解

    目录 一.前言 二.柔性数组的用法 三.柔性数组的内存分布 四.柔性数组的优势 五.总结 一.前言 仔细观察下面的代码,有没有看出哪里不对劲? struct S { int i; double d; char c; int arr[]; }; 还有另外一种写法: struct S { int i; double d; char c; int arr[0]; }; 你应该一眼就看到了,结构体的最后一个成员数组的写法是int arr[];或者是int arr[0],这两种写法是等价的,意思是这个数组

  • C++学习之算术运算符使用详解

    目录 1. 前言 2. 运算符种类 3. 算术运算符 3.1 功能描述 3.2 运算符重载问题 3.3 两数相除的问题 3.4 关 于/和%运算符的正.负问题 3.5 数据溢出问题 3.6 类型转换 3.7 {}赋值语法 3.8 强制类型转换 3.9 auto 语法 4. 总结 1. 前言 编写程序时,数据确定后,就需要为数据提供相应的处理逻辑(方案或算法).所谓逻辑有2种存在形态: 抽象形态:存在于意识形态,强调思考过程,与具体的编程语言无关. 具体形态:通过代码来实现.需要使用表达式描述完整

  • Go语言实战学习之流程控制详解

    目录 1. 前言 2. if分支 3. for及for-range循环 4. switch-case-fallthrough分支 5. goto 6. break和continue 7. 跳出嵌套循环 8. 最后 1. 前言 这里还是再总结一下流程控制,和其它语言相比做了一些优化,比如相比c增加了迭代器类型的for循环,switch针对c中容易出问题的地方做了一些修改,避免出现缺少break时存在的常见问题,此外,和Java类似也存在跳出循环和多层嵌套的方法,C中容易造成使用不当的goto也同样

  • Java语言实现数据结构栈代码详解

    近来复习数据结构,自己动手实现了栈.栈是一种限制插入和删除只能在一个位置上的表.最基本的操作是进栈和出栈,因此,又被叫作"先进后出"表. 首先了解下栈的概念: 栈是限定仅在表头进行插入和删除操作的线性表.有时又叫LIFO(后进先出表).要搞清楚这个概念,首先要明白"栈"原来的意思,如此才能把握本质. "栈"者,存储货物或供旅客住宿的地方,可引申为仓库.中转站,所以引入到计算机领域里,就是指数据暂时存储的地方,所以才有进栈.出栈的说法. 实现方式是

  • 从go语言中找&和*区别详解

    *和&的区别 :& 是取地址符号 , 即取得某个变量的地址 , 如 ; &a*是指针运算符 , 可以表示一个变量是指针类型 , 也可以表示一个指针变量所指向的存储单元 , 也就是这个地址所存储的值 . 从代码中验证 : 先构建一个Rect类型 : 1. &是取地址符号, 取到Rect类型对象的地址 2. *可以表示一个变量是指针类型(r是一个指针变量): 3.*也可以表示指针类型变量所指向的存储单元 ,也就是这个地址所指向的值 4.查看这个指针变量的地址 , 基本数据类型直

  • C语言中 & 和 &&的区别详解

    这是c语言的基本语法,但是在学习的过程中也总是搞混.所以记录一下,也和大家分享一下. &:按照位与操作,例如:0010&1101,结果为0000 &是java中的位逻辑运算:       eg: 2&3=2: 分析如下: 2的二进制为10 :3的二进制为11 : 逻辑&之后为10 &&:短路与,表示如果两个条件都成立则执行之后的逻辑: 例如:if(a==0&&b==0),意思就是if a为0并且b为0的时候,进行下一步操作. || 短

  • C语言入门之基础知识详解

    一.思维导图 内容不限于此思维导图 二.环境搭建 对于老手,自动跳过这一趴吧,或者也可以看一下我有没有啥纰漏,毕竟小白需要这一趴. 编译器很多,大部分老师会在学生学习C语言的时候推荐使用VC,不带语言提示器的那种,说是可以提高学生的编码能力.我也不知道到底是不是这么一回事儿.我推荐使用VS,这样学的快,函数记不住的问题很严重吗?项目的车轮碾压过去,再记不住也得记住吧!!! 更何况这个系列到后面是会有需要用文本文件编程写项目的阶段. 下载VS2019社区版,不要标新立异选那些最新版的,出了问题到时

随机推荐