首页 > 其他分享 >8.Golang中的运算符-算术运算符、关系运算符、逻辑运算符、赋值运算符

8.Golang中的运算符-算术运算符、关系运算符、逻辑运算符、赋值运算符

时间:2024-03-23 09:11:49浏览次数:21  
标签:Golang 10 int fmt 运算符 var Println 赋值

Golang 中的运算符

1、Golang 内置的运算符

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符

2、算数运算符

运算符 描述
+ 相加
- 相减
* 相乘
/ 相除
% 求余=被除数-(被除数/除数)*除数

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

package main

import ( 
   "fmt"
)

func main() {
   fmt.Println("10+3=", 10+3) // =13
   fmt.Println("10-3=", 10-3) // =7
   fmt.Println("10*3=", 10*3) // =30
   //除法注意:如果运算的数都是整数,那么除后,去掉小数部分,保留整数部分
   fmt.Println("10/3=", 10/3) //3
   fmt.Println("10.0/3=", 10.0/3) //3.3333333333333335
   // 取余注意 余数=被除数-(被除数/除数)*除数
   fmt.Println("10%3=", 10%3) // =1
   fmt.Println("-10%3=", -10%3) // -1
   fmt.Println("10%-3=", 10%-3) // =1
   fmt.Println("-10%-3=", -10%-3) // =-1
}

注意:在 golang 中,++ 和 -- 只能独立使用 错误写法如下:

var i int = 8
var a int
a = i++ //错误,i++只能独立使用
a = i-- //错误, i--只能独立使用

注意:在 golang 中没有前++ 错误写法如下:

var i int = 1
++i // 错误,在 golang 没有 前++
--i // 错误,在 golang 没有 前--
fmt.Println("i=", i)

++ --正确写法:

var i int = 1
i++
fmt.Println("i=", i)

3、关系运算符

运算符 描述
== 检查两个值是否相等,如果相等返回 True 否则返回 False。
!= 检查两个值是否不相等,如果不相等返回 True 否则返回 False。
> 检查左边值是否大于右边值,如果是返回 True 否则返回 False。
>= 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。
< 检查左边值是否小于右边值,如果是返回 True 否则返回 False。
<= 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。
package main

import ( 
   "fmt"
)

func main() {
   //演示关系运算符的使用
   var n1 int = 9
   var n2 int = 8
   fmt.Println(n1 == n2) //false
   fmt.Println(n1 != n2) //true
   fmt.Println(n1 > n2) //true
   fmt.Println(n1 >= n2) //true
   fmt.Println(n1 < n2) //flase
   fmt.Println(n1 <= n2) //flase
   flag := n1 > n2
   fmt.Println("flag=", flag)
}

4、逻辑运算符

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

package main

import (
	"fmt"
)

func main() {
    //演示逻辑运算符的使用 &&
    var age int = 40
    if age > 30 && age < 50 {
        fmt.Println("ok1")
    }
    if age > 30 && age < 40 {
        fmt.Println("ok2")
    }
    //演示逻辑运算符的使用 ||
    if age > 30 || age < 50 {
        fmt.Println("ok3")
    }
    if age > 30 || age < 40 {
        fmt.Println("ok4")
    }
    //演示逻辑运算符的使用 !
    if age > 30 {
        fmt.Println("ok5")
    }
    if !(age > 30) {
        fmt.Println("ok6")
    }
}

逻辑运算符短路演示


package main

import ( 
	"fmt"
)

func test() bool {
	fmt.Println("test...")
	return true
}

func main() {
    var i int = 10
    if i < 9 && test() {
    	fmt.Println("ok...")
    }
    if i > 9 || test() {
    	fmt.Println("hello...")
	}
}

5、赋值运算符

运算符 描述
= 简单的赋值运算符,将一个表达式的值赋给一个左值
+= 相加后再赋值
-= 相减后再赋值
*= 相乘后再赋值
/= 相除后再赋值
%= 求余后再赋值

d := 8 + 2*8 // 赋值运算从右向左
fmt.Println(d)

x := 10
x += 5 //x=x+5
fmt.Println("x += 5 的值:", x)

x := 10
x -= 5 //x=x-5
fmt.Println("x -= 5 的值:", x)

x := 10
x *= 5 //x=x*5
fmt.Println("x *= 5 的值:", x)

x := 10.0
x /= 5
fmt.Println("x /= 5 的值:", x)

x := 10
x %= 3
fmt.Println("x %= 3 的值:", x)

6、运算符练习

  • 练习 1:有两个变量,a 和 b,要求将其进行交换,最终打印结果
a := 9
b := 2
t := a
a = b //
b = t //
fmt.Printf("交换后的情况是 a = %v , b=%v \n", a, b)
  • 练习 2:假如还有 100 天放假,问:xx 个星期零 xx 天
var days int = 100
var week int = days / 7
var day int = days % 7
fmt.Printf("%d 个星期零%d 天\n", week, day)
  • 练习 3:定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100), 请求出华氏温度对应的摄氏温度
var huashi float32 = 134.2
var sheshi float32 = 5.0 / 9 * (huashi - 100)
fmt.Printf("%v 对应的摄氏温度=%v \n", huashi, sheshi)

7、位运算符(了解)

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

运算符 描述
& 参与运算的两数各对应的二进位相与。 (两位均为 1 才为 1)
` `
^ 参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为 1。
(两位不一样则为 1)
<< 左移 n 位就是乘以 2 的 n 次方。 “a<<b”是把 a 的各二进位全部左移 b 位,高位
丢弃,低位补 0。
>> 右移 n 位就是除以 2 的 n 次方。 “a>>b”是把 a 的各二进位全部右移 b 位。
package main

import "fmt"

func main() {
    /* & 两位均为 1 才为 1
    | 两位有一个为 1 就为 1
    ^ 相异或 两位不一样则为 1
    << 左移 n 位就是乘以 2 的 n 次方。 “a<<b”是把 a 的各二进位全部左移 b 位,
    高位丢弃,低位补 0。
    >> 右移 n 位就是除以 2 的 n 次方。
    */

    var a int = 5 // 101
    var b int = 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("5>>2=", a>>b) // 5 右移 2 位 1
    fmt.Println("5<<2=", a<<b) // 5 左移 2 位 10100
    fmt.Println("5<<1=", 5<<1) // 1010
    fmt.Println("5>>1=", 5>>1) // 10
    fmt.Println("7>>2=", 7>>2) // 1
}

标签:Golang,10,int,fmt,运算符,var,Println,赋值
From: https://www.cnblogs.com/happyhuangjinjin/p/18090776

相关文章

  • 7.GoLang中基本数据类型之间的转换
    GoLang中基本数据类型之间的转换1、关于golang中的数据类型转换Go语言中只有强制类型转换,没有隐式类型转换。2、数值类型之间的相互转换数值类型包括:整形和浮点型packagemainimport"fmt"funcmain(){varaint8=20varbint16=40varc=int16......
  • python运算符
    运算符:算数运算符:赋值运算符:比较运算符: 逻辑运算符:  ......
  • 复试C++19真题_看程序写结果_前置++运算符重载 易错
    考察前置++运算符设置为友元函数,这题的坑在于,返回值是不是对象的引用,形参也不是对象的引用,导致自增离开了作用域以后就不在有任何效果。#include<iostream>usingnamespacestd;classC{private:intxx,yy;public:C(intx,inty):xx(x),yy(y){}friendC......
  • C语言-教案04(从小白到劝退之运算符)
    算术运算符运算符功能说明举例+加法,一目取正a+b-减法,一目取负a-b*乘法a*b/除法a/b%取模(求余)a%b++自加1a++,++b--自减1a--,--b关注点:减号也是负号,比如-a是取变量a的相反数。取模运算要求左右两边操作数必须是整型数据......
  • Raku教程值运算符详解
    文章目录简介数值和字符串运算比较类型转换构造数据高级运算符简介raku中提供了非常多的运算符操作,除了常见的数值和逻辑上的计算之外,对于类型转换、数据生成等常用操作,也提供了相应的运算符。此外,运算符作用在变量或字面量的不同位置,可能会产生不同的结果,据此可将......
  • [GPT] swoole的协程和golang的协程有什么区别,哪个更好
    Swoole的协程和Golang(Go语言)的协程(Goroutine)在概念上都是为了实现轻量级的并发编程,但它们在具体实现、使用方式和性能特点上有所不同:实现原理:Golang协程(Goroutine):Go语言从语言层面内置了对协程的支持。Goroutine是由Go运行时系统管理的轻量级线程,它基于M:N调度模型......
  • golang使用redis锁(避免误解锁/死锁/过期引起并发):go-redis, redigo
    【go-redis】简单实现方式,不会死锁/误解锁packagemainimport("context""fmt""sync""time"redis2"github.com/redis/go-redis/v9")varmutexsync.Mutex//redis加锁sec:锁定秒数(避免死锁),value锁唯一值(避免误解......
  • 前端基础之JavaScript运算符
    一、什么是运算符运算符,顾名思义就是在运算中的符号,例如加法中的”+“就是一个运算符。严谨来说,运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。二、运算符的分类JavaScript中的运算符可以分为多种类型,包括算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算......
  • C++内置 new /delete 运算符浅析
    全文目录malloc()/free()原型解析简化版本用法举例new/delete静态/动态类型new/delete运算符原型常用但没有注意区分的例子使用new分配对象的生存期那new/delete都做什么事呢几个注意点写在最后malloc()/free()提到new/delete运算符就不得不说malloc()/f......
  • golang 中 channel cap设为1原理 | 有无缓冲的channel
    在golang中,如果涉及消息传递或者是并发控制等,我们常常用到channel,channel的具体原理这里不讨论,今天主要看看有无缓冲以及缓冲值的设计。无缓冲的channel联系channel的数据结构mchan可知,就没得buf,但sendqrecvq这些肯定都是有的,所以在无缓冲的channel中,如果写者写入ch......