算数运算符细节讨论|学习笔记

简介: 本节课来看算术运算符的细节。

开发者学堂课程【GO 语言核心编程-基础语法、数组、切片、Map:算数运算符细节讨论】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/625/detail/9542


算数运算符细节讨论

 

目录

一、 算术运算符细节说明

二、 案例

三、 课堂练习

 

本节课来看算术运算符的细节。

 

一、算术运算符细节说明

在 go 语言里使用算术运算符的时候,需要注意有以下5点: 

1. 对于除号"/",它的整数除和小数除是有区别的:整数之间做除法 

时,只保留整数部分而舍弃小数部分。例如:x=19/5 ,结果是3

// x=19/5本身结果为3.8,四舍五入为4,又因为两个值均为整数,最后结果必须为整数,则小数部分去除。

2.当对一个数取模时,可以等价 a%b=a-a/b*b,这样可以看到取模的一个本质运算。

3.Golang 的自增自减只能当做一个独立语言使用时,不能这样使用 b := a++或者 b := a--

4.Golang 的++和--只能写在变量的后面,不能写在变量的前面,即:只有 a++ a-没有++a –-a

5.Golang 的设计者去掉 c / java 中的自增自减的容易混淆的写法,让 Golang 更加简洁,统一。(强制性的)

// 容易产生混淆,歧义的地方尽量避免,做简化操作。

 

二、案例

(1)对于除号"/",它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。例如:x=19/5 ,结果是3

(2)当对一个数取模时,可以等价 a%b=a-a/b*b,这样可以看到取模的一个本质运算。

(3)Golang 的自增自减只能当做一个独立语言使用时,不能这样使用 b := a++或者 b := a--

在 chapter04文件夹中新建 demo02,再次新建文件 main.go。将结构拷贝过来,代码如下:

package main

import (

“fmt”

)

func main(){

//在 golang 中,++和--只能独立使用

var i int = 8

var a int

a = i++  //错误i++只能独立使用

a = i--  //错误i--只能独立使用

//若想使用 a = i++,则先赋于i++,随后即可使用;a = i--同样如此。

if i++ > 0 {

fmt.Println( “ok”)

}

如上语法在很多语言中是支持的,将某一个值++后与某一值对比是常见的,但是在 Golang 不被允许,原因在于保存之后会提示错误!若将++去除,就不会提示错误。

综上:

均不可行!所以在 golang 中,++和 --只能独立使用。这是 golang 中的强制性语法,从 golang 设计者角度,因为在初学者眼中,++与--是令人厌烦的,运算完还需进行判断。所以变为独立使用。例如:先完成 i++,再进行比较,强制语法的统一性和简洁性,减少歧义。

接下来看下一个:

(4) Golang 的++和--只能写在变量的后面,不能写在变量的前面,即:只有 a++ a--没有++a -–a

这里体现出设计者强制语言不要有歧义的设计理念。意思就是并不需要整理出复杂的东西,要给人一目了然的。

例如:

var i int = 1

i++  //正确

输出:

fmt.Println(“i=”,i)

}

在 cmd.exe 里输入以下命令回车:

cd  ..\demo02

go run main.go

输出结果:

i=2

可以看到 i=2,正确。但是不能如此操作!

i++后进行++i  //大多数编程语言中可进行,但是这种情况会出现报错!

++i //错误,在 golang 没有前++

i--  //正确

--i  //错误,在 golang 没有前--

fmt.println(“i=”,i)

所以++i 与--i 这2种写法是错误的。

 

三、课堂练习

课堂练习题1

1. Var i int = 1

i=i++  // i=i++ 这是一个错误的代码,所以不会产生任何结果

//编译不通过

fmt.Println(i);

//问结果是多少为什么

//上面的代码时错误编译不通过i = i++

2. Var i int= 10  //第一行内容正确

if i++ >10 {  //错误,因为违背了i++是独立使用的

fmt.Println(“ok”)

}

//问结果是多少为什么

//上面的代码时错误编译不通过i++ >10

关于课堂练习就讲解到这里。

本节课关于使用运算符的注意事项和课堂练习1就介绍到这里。

相关文章
|
4天前
|
数据采集 人工智能 安全
|
13天前
|
云安全 监控 安全
|
5天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1102 152
|
18天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1780 9
|
10天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
708 152
|
12天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
664 14
|
7天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
467 5