Go语言从入门到放弃(三) 布尔/数字/格式化输出
本章主要介绍Go语言的数据类型
布尔(bool)
布尔指对或者错,也就是说bool只有两个值, True 或 False
两个类型相同的值可以使用比较运算符来得出一个布尔值
当两个值是完全相同的情况下会返回 True,否则返回 False。
package main var suma int =
var sumb int = func main() {
print(suma == sumb)
}
上方的代码返回 true
如果值不相同返回 false
如果变量类型不一样会报错
package main var suma int =
var sumb int8 = func main() {
print(suma == sumb)
}
invalid operation: suma == sumb (mismatched types int and int8)
逻 辑 值 可 以 被 用 于 条 件 结 构 中 的 条 件 语 句, 以 便 测 试 某 个 条 件 是 否 满 足。 另 外, 和 &&、 或 | | 与 相 等 = = 或 不 等 != 属 于 二 元 运 算 符, 而 非 ! 属 于 一 元 运 算 符。
!运算符指的是非运算符,非 运 算 符 用 于 取 得 和 布 尔 值 相 反 的 结 果。
当!后的值为 true 时会反转成 false
false 时同理
package main
var aVar int =
func main() {
print(!(aVar != ))
}
返回 false
和运算符 &&
只有当两边都为 true 时才是 true
package main
var aVar int =
func main() {
print(aVar != && aVar !=)
}
结果为 false
或运算符 ||
只有当两边值都为 false 时才是 false
package main
var aVar int =
func main() {
print(aVar != || aVar !=)
}
结果为 true
对 于 布 尔 值 的 好 的 命 名 能 够 很 好 地 提 升 代 码 的 可 读 性, 例 如 以 is 或 者 Is 开 头 的 isSorted、 isFinished、 isVisivle, 使 用 这 样 的 命 名 能 够 在 阅 读 代 码 的 获 得 阅 读 正 常 语 句 一 样 的 良 好 体 验, 例 如 标 准 库 中 的 unicode.IsDigit( ch)
数字类型
数字类型大体可分为整形 int 和浮点型 float
需要注意的是,int和unit和unitptr长度是由程序所在的操作系统决定的
如果在32位操作系统,int和unit占32位(4字节)
64位则占64位(8字节)
uintptr 长度为足够存放一个指针
# 目前机器基本为64位
整数有多种类型,每种类型对应不同的长度
| 关键字 | 支持的大小 |
| int | 随操作系统变化 |
| int8 | -128 -- 127 |
| int16 | -32768 -- 32767 |
| int32 | -2147483648 -- 2147483647 |
| int64 | -9223372036854775808 -- 9223372036854775807 |
| uint | 随操作系统变化 |
| uint8 | 0 -- 255 |
| uint16 | 0 -- 65535 |
| uint32 | 0 -- 4294967295 |
| uint64 | 0 -- 18446744073709551615 |
uint 和 int 区别就是uint不支持复数
在 Go 语言中没有 float 类型,只有 float32 和 float64
| 关键字 |
支持的大小 |
| float32 |
+- 1e-45 -> +- 3.4 * 1e38 |
| float64 |
+- 5 * 1e-324 -> 107 * 1e308 |
你需要知道的是
int是计算最快的一种类型
如果是对数字有要求的变量尽量规定长度
整形的初始值(零值为0),浮点数的零值为(0.0)
float32精确到小数点后7位,float64精确到后15位
如果你使用到 math 包,那么尽可能使用 float64,因为 math 中关于数学运算的函数都要求接收此类型
如果涉及到类型之间的转换使用 转换后的类型(原变量) 的方式
如果将大范围数字转换为小范围类型时会丢失精度
进制
你 可 以 通 过 增 加 前 缀 0 来 表 示 8 进 制 数( 如: 077),
增 加 前 缀 0x 来 表 示 16 进 制 数( 如: 0xFF),
以 及 使 用 e 来 表 示 10 的 连 乘( 如: 1e3 = 1000, 或 者 6.022e23 = 6.022 x 1e23)。
格式化输出
在 格 式 化 字 符 串 里,% d 用 于 格 式 化 整 数(% x 和 %X 用 于 格 式 化 16 进 制 表 示 的 数 字),
% g 用 于 格 式 化 浮 点 型(% f 输 出 浮 点 数,% e 输 出 科 学 计 数 表 示法),
% 0d 用 于 规 定 输 出 定 长 的 整 数, 其 中 开 头 的 数 字 0 是 必 须 的。
%n.mg 用 于 表 示 数 字 n 并 精 确 到 小 数 点 后 m 位, 除 了 使 用 g 之 外, 还 可 以 使 用 e 或 者 f,
例 如: 使 用 格 式 化 字 符 串 %5.2e 来 输 出 3.4 的 结 果 为 3.40e + 00。
Go语言从入门到放弃(三) 布尔/数字/格式化输出的更多相关文章
- hive从入门到放弃(三)——DML数据操作
上一篇给大家介绍了 hive 的 DDL 数据定义语言,这篇来介绍一下 DML 数据操作语言. 没看过的可以点击跳转阅读: hive从入门到放弃(一)--初识hive hive从入门到放弃(二)--D ...
- Kafka从入门到放弃(三) —— 详说生产者
上一篇对Kafka做了简单介绍,还没看的朋友可以点击下方链接. Kafka从入门到放弃(一) -- 初识别Kafka 消息中间件必须与生产者和消费者一起存在才有意义,这次先来聊聊Kafka的生产者. ...
- Go语言从入门到放弃(二) 优势/关键字
本来这里是写数据类型的,但是规划了一下还是要一步步来,那么本篇就先介绍一下Go语言的 优势/关键字 吧 本章转载 <The Way to Go>一书 Go语言起源和发展 Go 语 言 起 ...
- Go语言从入门到放弃(一) 变量/常量/函数
HelloWorld 我们先看看一个最简单的HelloWorld代码 package main import "fmt" func main() { fmt.Println(&qu ...
- GO语言从入门到放弃目录
GO语言基础 第一个GO程序 GO语言常量和变量 GO语言数据类型 GO语言流程控制 GO语言数组 GO语言切片 GO语言 map GO语言函数 GO语言指针 Go语言接口 GO语言常用包 GO语言的 ...
- C语言编程入门之--第三章编写第一个C语言程序
第三章 编写第一个C语言程序 导读:一般学一门计算机语言的第一堂上机课(“上机”顾名思义,上了计算机),就是往屏幕输出“hello world”,本章也不例外. 1.1 Hello,World! 这一 ...
- Go语言从入门到放弃(四)
前言 有段时间没摸Go语言了,最近B站的Go语言泄露挺火的. 还差的很远呐 学无止境 本章主要介绍一些零碎的小知识点 变更记录 # 19.4.30 起笔 # 19.4.30 增加代码打包步骤 正文 ...
- robotium从入门到放弃 三 基于apk的自动化测试
1.apk重签名 在做基于APK的自动化测试的过程中,需要确保的一点是,被测试的APK必须跟测试项目具有相同的签名,那怎么做才能确保两者拥有相同的签名呢?下面将给出具体的实现方法. 首先将被测 ...
- storm从入门到放弃(三),放弃使用《StreamId》特性。
序:StreamId是storm中实现DAG有向无环图的重要一个特性,但是从实际生产环境来看,这个功能其实蛮影响生产环境的稳定性的,我们系统在迭代时会带来整体服务的不可用. StreamId是stor ...
随机推荐
- [Windows] [VS] [C] [取得指针所指内存的二进制形式字符]
// 取得指针所指内存的十六进制形式字符串,size指定字节长度#define Mem_toString(address, size) _Mem_toString((PBYTE)address, si ...
- ios 不支持-,-时间。
var date = "2000-08-29"; console.log(new Date(date).getTime());解决办法 date .replace(/-/g, ' ...
- Newtonsoft.Json序列化Enum类型
[JsonConverter(typeof(StringEnumConverter))] public StringAlignment TextAlign { get => textAlign; ...
- 十四、文件和目录——文件时间和utime函数
14.1 文件时间 存在于 stat 结构体中 14.2 文件时间函数 14.2.1 介绍 utime(修改文件的存取时间和更改时间) 相关函数 utimes,stat #include <sy ...
- bzoj 3916 暴力哈希
暴力的哈希,注意: 将一个串当作另一个串的前缀,需要乘上p[len],len=后面串的长度 这是自己的代码,拿数据在本地测A掉了,但是bz上wa了??bz换数据了难道?? #include<cs ...
- cpp 常量函数(函数后加const)
const用在成员函数后 主要是针对类的const 对象 如: class Text{ public: void printconst(void)const{cout<<" ...
- luogu P3162 [CQOI2012]组装
传送门 mdzz,为什么这题有个贪心的标签啊qwq 首先考虑每一种车间,对于每相邻两个车间,在中点左边那么左边那个会贡献答案,在右边就右边那个更优 所以总共会有m-1个这样的分界中点,然后最多有m+1 ...
- mysql 案例 ~ mysql字符集详解
一 谈谈mysql常见的字符集问题 二 字符集统一 1 character_set_server 2 character_set_client 3 java/php等连接字符集 4 chara ...
- synchronized底层实现原理&CAS操作&偏向锁、轻量级锁,重量级锁、自旋锁、自适应自旋锁、锁消除、锁粗化
进入时:monitorenter 每个对象有一个监视器锁(monitor).当monitor被占用时就会处于锁定状态,线程执行monitorenter指令时尝试获取monitor的所有权,过程如下:1 ...
- 20165234 《Java程序设计》第五周学习总结
第五周学习总结 教材学习内容总结 第七章 内部类与异常类 内部类 内部类:在一个类中定义另一个类. 外嵌类:包含内部类的类,称为内部类的外嵌类. 内部类的类体中不能声明类变量和类方法.外嵌类的类体中可 ...