Go 语言中的内置运算符

news2025/7/26 9:13:40

1. 算术运算符

注意: ++(自增)和--(自减)在 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)

2. 关系运算符

示例代码如下:

package main
import "fmt"

func main() {
    var a1 = 9
    var a2 = 8
    fmt.Println(a1 == a2) // false
    fmt.Println(a1 != a2) // true
    fmt.Println(a1 >  a2) // true
    fmt.Println(a1 >= a2) // true
    fmt.Println(a1 <  a2) // flase
    fmt.Println(a1 <= a2) // flase


    flag := a1 > a2
    fmt.Println("flag=", flag) // flag=true

    var a3 = 9
    var a4 = 14
    flag := a3 > a4
    if flag {
        fmt.Println("a3>a4")  // a3>a4
    }

    var a5 = 9
    var a6 = 8
    if a5 == a6 {
        fmt.Println("a4=a6") 
    } else {
        fmt.Println("a5!=a6") // a5!=a6
    }

    
}

3. 逻辑运算符


package main
import ("fmt")
func main() {

    var age int = 40

    // 演示逻辑运算符的使用 &&
    if age > 30 && age < 50 {
        fmt.Println("ok1") // ok1
    }
    if age > 30 && age < 40 {
        fmt.Println("ok2")
    }

    // 演示逻辑运算符的使用 ||
    if age > 30 || age < 50 {
        fmt.Println("ok3") // ok3
    }
    if age > 30 || age < 40 {
        fmt.Println("ok4") // ok4
    }

    // 演示逻辑运算符的使用 !
    if age > 30 {
        fmt.Println("ok5") // 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...")
    }
}

4. 赋值运算符


package main
import "fmt"
func main() {


    var a = 10
    a += 3 
    fmt.Println(a) // 13

    
    var b = 10
    b -= 3 
    fmt.Println(b) // 7

    var c = 10
    c *= 3 
    fmt.Println(c) // 30


    var d = 10
    d /= 3        
    fmt.Println(d) // 3


    var e float64 = 10
    e /= 3        
    fmt.Println(e) // 3.3333333333333335


    var f = 10
    f %= 3        
    fmt.Println(f) // 1

}

5. 位运算符

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

package main

import "fmt"

func main() {
    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) // 1  (5右移2位)
    fmt.Println("5>>1=", 5>>1) // 10 (5右移1位)
    fmt.Println("7>>2=", 7>>2) // 1  (7右移1位)


    fmt.Println("5<<2=", a<<b) // 10100 (5左移2位)
    fmt.Println("5<<1=", 5<<1) // 1010  (5左移1位)

}

6. 运算符练习

1. 练习:有两个变量a和b,要求将其进行交换,最终打印结果。

package main
import "fmt"
func main() {

    var a = 34
    var b = 10

    t := a // t=34
    a = b  // a=10
    b = t  // b=34
    fmt.Printf("a=%v b=%v", a, b)

}

2. 练习:有两个变量a和b,要求将其进行交换,不能使用中间变量,最终打印结果。

package main
import "fmt"
func main() {

    var a = 34
    var b = 10

    a = a + b // a=34+10 =>44
    b = a - b // b=34+10-10=>34
    a = a - b // a=(34+10)-(34+10-10)=>10

    fmt.Printf("a=%v b=%v", a, b)

}

3. 练习:假如还有100天放假,问:多少个星期零多少天。

package main
import "fmt"
func main() {

    var days = 100
    var week = days / 7
    var day = days % 7
    fmt.Printf("距离放假还有%v周零%v天", week, day)

}

4. 练习:定义一个变量保存华氏温度,请求出华氏温度对应的摄氏温度。

华氏温度转换摄氏温度的公式为:C=(F-32)÷1.8,摄氏温标(°C)和华氏温标(°F)

package main
import "fmt"
func main() {
    var F float32 = 100 // 华氏温度
    C := (F - 32) / 1.8
    fmt.Printf("华氏温度对应的摄氏温度是%.2f", C)
}

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

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

相关文章

JS面试常见问题——数据类型篇

这几周在进行系统的复习&#xff0c;这一篇来说一下自己复习的JS数据结构的常见面试题中比较重要的一部分 文章目录 一、JavaScript有哪些数据类型二、数据类型检测的方法1. typeof2. instanceof3. constructor4. Object.prototype.toString.call()5. type null会被判断为Obje…

【靶场】XXE-Lab xxe漏洞

前言 学习xxe漏洞,搭了个XXE-Lab的靶场 一、搭建靶场 现在需要登录,不知道用户名密码,先随便试试抓包 二、判断是否存在xxe漏洞 1.首先登录抓包 看到xml数据解析,由此判断和xxe漏洞有关,但还不确定xxe漏洞是否存在。 2.尝试xxe 漏洞 判断是否存在xxe漏洞 A.send to …

开源项目实战学习之YOLO11:12.6 ultralytics-models-tiny_encoder.py

👉 欢迎关注,了解更多精彩内容 👉 欢迎关注,了解更多精彩内容 👉 欢迎关注,了解更多精彩内容 ultralytics-models-sam 1.sam-modules-tiny_encoder.py2.数据处理流程3.代码架构图(类层次与依赖)blocks.py: 定义模型中的各种模块结构 ,如卷积块、残差块等基础构建…

Python[数据结构及算法 --- 栈]

一.栈的概念 在 Python 中&#xff0c;栈&#xff08;Stack&#xff09;是一种 “ 后进先出&#xff08;LIFO&#xff09;”的数据结构&#xff0c;仅允许在栈顶进行插入&#xff08;push&#xff09;和删除&#xff08;pop&#xff09;操作。 二.栈的抽象数据类型 1.抽象数…

Unity VR/MR开发-开发环境准备

视频讲解链接&#xff1a; 【XR马斯维】UnityVR/MR开发环境准备【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili

2025-06-08-深度学习网络介绍(语义分割,实例分割,目标检测)

深度学习网络介绍(语义分割,实例分割,目标检测) 前言 在开始这篇文章之前&#xff0c;我们得首先弄明白&#xff0c;什么是图像分割&#xff1f; 我们知道一个图像只不过是许多像素的集合。图像分割分类是对图像中属于特定类别的像素进行分类的过程&#xff0c;即像素级别的…

【Ragflow】26.RagflowPlus(v0.4.0):完善解析逻辑/文档撰写模式全新升级

概述 在历经半个月的间歇性开发后&#xff0c;RagflowPlus再次迎来一轮升级&#xff0c;正式发布v0.4.0。 开源地址&#xff1a;https://github.com/zstar1003/ragflow-plus 更新方法 下载仓库最新代码&#xff1a; git clone https://github.com/zstar1003/ragflow-plus.…

智能照明系统:具备认知能力的“光神经网络”

智能照明系统是物联网技术与传统照明深度融合的产物&#xff0c;其本质是通过感知环境、解析需求、自主决策的闭环控制&#xff0c;重构光与人、空间、环境的关系。这一系统由智能光源、多维传感器、边缘计算单元及云端管理平台构成&#xff0c;形成具备认知能力的“光神经网络…

SpringSecurity+vue通用权限系统

SpringSecurityvue通用权限系统 采用主流的技术栈实现&#xff0c;Mysql数据库&#xff0c;SpringBoot2Mybatis Plus后端&#xff0c;redis缓存&#xff0c;安全框架 SpringSecurity &#xff0c;Vue3.2Element Plus实现后台管理。基于JWT技术实现前后端分离。项目开发同时采 …

短视频时长预估算法调研

weighted LR o d d s T p 1 − p ( 1 − p ) o d d s T p ( T p o d d s ∗ p ) o d d s p o d d s T o d d s odds \frac{Tp}{1-p} \newline (1-p)odds Tp \newline (Tp odds * p) odds \newline p \frac{odds}{T odds} \newline odds1−pTp​(1−p)oddsTp(Tpodds…

设计模式域——软件设计模式全集

摘要 软件设计模式是软件工程领域中经过验证的、可复用的解决方案&#xff0c;旨在解决常见的软件设计问题。它们是软件开发经验的总结&#xff0c;能够帮助开发人员在设计阶段快速找到合适的解决方案&#xff0c;提高代码的可维护性、可扩展性和可复用性。设计模式主要分为三…

FTPS、HTTPS、SMTPS以及WebSockets over TLS的概念及其应用场景

一、什么是FTPS&#xff1f; FTPS&#xff0c;英文全称File Transfer Protocol with support for Transport Layer Security (SSL/TLS)&#xff0c;安全文件传输协议&#xff0c;是一种对常用的文件传输协议(FTP)添加传输层安全(TLS)和安全套接层(SSL)加密协议支持的扩展协议。…

Python 解释器安装全攻略(适用于 Linux / Windows / macOS)

目录 一、Windows安装Python解释器1.1 下载并安装Python解释1.2 测试安装是否成功1.3 设置pip的国内镜像------永久配置 二、macOS安装Python解释器三、Linux下安装Python解释器3.1 Rocky8.10/Rocky9.5安装Python解释器3.2 Ubuntu2204/Ubuntu2404安装Python解释器3.3 设置pip的…

Java多线程从入门到精通

一、基础概念 1.1 进程与线程 进程是指运行中的程序。 比如我们使用浏览器&#xff0c;需要启动这个程序&#xff0c;操作系统会给这个程序分配一定的资源&#xff08;占用内存资源&#xff09;。 线程是CPU调度的基本单位&#xff0c;每个线程执行的都是某一个进程的代码的某…

【芯片仿真中的X值:隐藏的陷阱与应对之道】

在芯片设计的世界里&#xff0c;X值&#xff08;不定态&#xff09;就像一个潜伏的幽灵。它可能让仿真测试顺利通过&#xff0c;却在芯片流片后引发灾难性后果。本文将揭开X值的本质&#xff0c;探讨其危害&#xff0c;并分享高效调试与预防的实战经验。    一、X值的本质与致…

python3GUI--基于PyQt5+DeepSort+YOLOv8智能人员入侵检测系统(详细图文介绍)

文章目录 一&#xff0e;前言二&#xff0e;技术介绍1.PyQt52.DeepSort3.卡尔曼滤波4.YOLOv85.SQLite36.多线程7.入侵人员检测8.ROI区域 三&#xff0e;核心功能1.登录注册1.登录2.注册 2.主界面1.主界面简介2.数据输入3.参数配置4.告警配置5.操作控制台6.核心内容显示区域7.检…

5. TypeScript 类型缩小

在 TypeScript 中&#xff0c;类型缩小&#xff08;Narrowing&#xff09;是指根据特定条件将变量的类型细化为更具体的过程。它帮助开发者编写更精确、更准确的代码&#xff0c;确保变量在运行时只以符合其类型的方式进行处理。 一、instanceof 缩小类型 TypeScript 中的 in…

【QT】qtdesigner中将控件提升为自定义控件后,css设置样式不生效(已解决,图文详情)

目录 0.背景 1.解决思路 2.详细代码 0.背景 实际项目中遇到的问题&#xff0c;描述如下&#xff1a; 我在qtdesigner用界面拖了一个QTableView控件&#xff0c;object name为【tableView_electrode】&#xff0c;然后【提升为】了自定义的类【Steer_Electrode_Table】&…

【Docker 02】Docker 安装

&#x1f308; 一、各版本的平台支持情况 ⭐ 1. Server 版本 Server 版本的 Docker 就只有个命令行&#xff0c;没有界面。 Platformx86_64 / amd64arm64 / aarch64arm(32 - bit)s390xCentOs√√Debian√√√Fedora√√Raspbian√RHEL√SLES√Ubuntu√√√√Binaries√√√ …

论文笔记:Large Language Models for Next Point-of-Interest Recommendation

SIGIR 2024 1 intro 传统的基于数值的POI推荐方法在处理上下文信息时存在两个主要限制 需要将异构的LBSN数据转换为数字&#xff0c;这可能导致上下文信息的固有含义丢失仅依赖于统计和人为设计来理解上下文信息&#xff0c;缺乏对上下文信息提供的语义概念的理解 ——>使用…