当前位置: 首页 > news >正文

4、数据结构

数据结构01

数值处理

取整

日常用的四种

  • / 整数除法,截取整数部分
  • math.Ceil 向上取整 “理解为天花板,向上取值”
  • math.Floor 向下取整 “理解为地板,向下取值”
  • math.Round 四舍五入
/ 整数除法,截取整数部分
func main() { fmt.Println(1/2, 5/2, 3/2)                 //0 2 1 fmt.Println(-1/2, -5/2, -3/2)			   // 0 -2 -1
}
math.Ceil 向上取整 “理解为天花板,向上取值”
func main() {fmt.Println(math.Ceil(2.01), math.Ceil(2.5), math.Ceil(2.8))      // 3 3 3fmt.Println(math.Ceil(-2.01), math.Ceil(-2.5), math.Ceil(-2.8))  // -2 -2 2
}
math.Floor  向下取整 “理解为地板,向下取值”
func main() {fmt.Println(math.Floor(2.01), math.Floor(2.5), math.Floor(2.8))  // 2 2 2fmt.Println(math.Floor(-2.01), math.Floor(-2.5), math.Floor(-2.8))// -3 -3 -3
}
math.Round 四舍五入
func main() {fmt.Println(math.Round(2.01), math.Round(2.5), math.Round(2.8))fmt.Println(math.Round(-2.01), math.Round(-2.5), math.Round(-2.8))fmt.Println(math.Round(0.5), math.Round(1.5), math.Round(2.5),math.Round(3.5))
}
2 3 3
-2 -3 -3
1 2 3 4

常用数值处理

fmt.Println(math.Abs(-2.7)) // 绝对值
fmt.Println(math.E, math.Pi) // 常数
fmt.Println(math.MaxInt16, math.MinInt16) // 常量,极值
fmt.Println(math.Log10(100), math.Log2(8)) // 对数
fmt.Println(math.Max(1, 2), math.Min(-2, 3)) // 最大值、最小值
fmt.Println(math.Pow(2, 3), math.Pow10(3)) // 幂
fmt.Println(math.Mod(5, 2), 5%2) // 取模
fmt.Println(math.Sqrt(2), math.Sqrt(3), math.Pow(2, 0.5)) // 开方

标准输入Scan

Scan:空白字符分割,回车提交。换行符当做空白字符

前人经验,一定要有空格分隔,不要用什么花里胡哨的符合来当做分隔符,因为有时候%s string类型是把那些符号作为字符串的,当做一个整体

package mainimport "fmt"func main() {var n intvar err errorvar (name stringage  int)n, err = fmt.Scan(&name, &age)if err != nil {panic(err)}fmt.Println(n, name, age)
}面板输入zfl 20输出2 zfl 20

如果少一个数据,Scan就会阻塞;如果输入数据多了,等下回Scan读取。例如,一次性输入zfl 20 100 只读取前面两个

如果使用短格式已经声明了n err 则再次使用n, err,不用声明

func main() {var (name  stringage   intheigh intwget  int)n, err := fmt.Scan(&name, &age)      if err != nil {panic(err)}fmt.Println(n, name, age)n, err = fmt.Scan(&heigh, &wget)    //前面短格式已经声明了,不需要在此声明if err != nil {panic(err)}fmt.Println(n, name, age, heigh, wget)
}
面板输入zfl 20输出2 zfl 20 继续输入
100 174
输出  2 zfl 20 100 174      后面的2 是第二次声明的n
如果使用,分隔
func main() {var (name  stringage   intheigh intwget  int)n, err := fmt.Scan(&name, &age)      if err != nil {panic(err)}fmt.Println(n, name, age)
面板输入zfl,20,100,170
20
输出2 zfl,20,100,170 20   因为name为string类型所以,分隔的看做为一个整体的字符串

在面板输入的任何都是string类型,通过Scan类型转换为声明的类型,想要的类型

Scanf:读取输入,按照格式匹配解析。如果解析失败,立即报错,那么就会影响后面的Scanf。

这个和Printf是一样的 只不过这个是按照类型输入

package mainimport "fmt"func main() {var n intvar err errorvar name stringvar age intfmt.Print("Plz input your name and age: ")n, err = fmt.Scanf("%s %d\n", &name, &age) // 这里要有\n以匹配回车if err != nil {panic(err)}fmt.Println(n, name, age)
}控制面板必须按照对应的类型输入不然的话会直接报错的 

fmt.Scanf(“%s,%d”, &name, &age) 中%s会和后面的非空白字符分不清楚,用 abc,20 是匹配不上
的,因为除空白字符外,都可以看做是字符串。所以,建议格式字符串中,一律使用空格等空白字符分割。

http://www.lryc.cn/news/221291.html

相关文章:

  • qt5.15.2+vs2019源码调试开发环境搭建
  • 【数据结构】单链表之--无头单向非循环链表
  • 网络中使用最多的图片格式有哪些
  • 个人常用Linux命令
  • 数据结构——常见简答题汇总
  • josef约瑟低电压继电器 DY-110 10-109V 辅助电源·DC110V 嵌入式面板安装
  • Visual Studio Code将中文写入变量时,中文老是乱码问题
  • 各省市30米分辨率DEM数据,推荐下载!
  • 操作系统引论(一)
  • 2023-11-7 OpenAI 45 分钟发布会:整理发布了哪些内容更新
  • 索引和事务
  • 全场景数实融合聚焦北京——2023(第六届)行业信息技术应用创新大会隆重召开
  • 深入理解强化学习——多臂赌博机:乐观初始值
  • [黑马程序员Pandas教程]——DataFrame数据的增删改操作
  • 【服务器】Java连接redis及使用Java操作redis、使用场景
  • Spark 基础知识点
  • 动作捕捉系统通过SDK与LabVIEW通信
  • 【PTE-day02 sqlmap操作】
  • 2021年03月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 2023.10.18 信息学日志
  • Modbus封装库(Com,tcp,udp一应俱全)
  • 专访HuggingFace CTO:开源崛起、创业故事和AI民主化丨智源独家
  • C++常用格式化输出转换
  • 如何使用 Loadgen 来简化 HTTP API 请求的集成测试
  • 软件测试面试大家是不是一问到项目就不会了?
  • 伐木猪小游戏
  • 0007Java安卓程序设计-ssm基于Android的校园新闻管理系统
  • git增加右键菜单
  • openGauss学习笔记-117 openGauss 数据库管理-设置数据库审计-查看审计结果
  • 学习代码20231106