Go 变量及基本数据类型2
#### Go 变量及基本数据类型(二)
今天学习一下基本数据类型,包括整数类型,小数类型,字符类型
##### 整数类型
用来存放整数数值的, 如0,1,-10,2222等;
整数型的类型有:
类型 |
有无符号 |
占用存储空间 |
表数范围 |
int8 |
有 |
1字节 |
-128~127 |
int16 |
有 |
2字节 |
-2^15~2^15-1 |
int32 |
有 |
4字节 |
-2^31~2^31-1 |
int64 |
有 |
8字节 |
-2^63~2^63-1 |
案例:
package main
import (
"fmt"
"unsafe"
)
func main(){
// 整数类型有符号(默认情况下int 类型根据系统平台有关,32 位系统int= int32
// 64 位系统int = int64
var i int = 1
var i1 int8 = 127
fmt.Println(i,i1)
fmt.Println(unsafe.Sizeof(i)) //8 变量占用的内存大小单位字节
fmt.Println(unsafe.Sizeof(i1)) //1 变量占用的内存大小单位字节
}
整数类型的无符号类型
类型 |
有无符号 | 占用储存空间 | 表数范围 |
uint8 |
无 |
1字节 |
0~255 |
uint16 |
无 |
2字节 |
0~2^16-1 |
uint32 |
无 |
4字节 |
0~2^32-1 |
uint64 |
无 |
8字节 |
0~2^64-1 |
案例:
package main
import (
"fmt"
"unsafe"
)
func main(){
//整数类型无称号(默认情况下uint类型跟系统平台有关,32 位系统uint = uint32
// 64 位系统 uint = uint64
var i uint = 266
var i1 uint16 = 100
fmt.Println(i,i1)
fmt.Println(unsafe.Sizeof(i)) // 8
fmt.Println(unsafe.Sizeof(i1)) // 2
}
整数类型的其它类型
类型 |
有无符号 |
占用存储空间 |
表数范围 |
int |
有 |
32位系统4字节,64位系统8字节 |
-2^31~2^31-1,-2^63~-2^63-1 |
uint |
无 |
32位系统4字节,64位系统8字节 |
0~2^32-1,0~2^64-1 |
rune |
有 |
4字节 |
-2^31~2^31-1,表示一个unicode 码 |
byte |
无 |
1字节 |
0~255 存储字符时使用byte |
package main
import "fmt"
func main(){
var i int = 1000 // 无符号,内存大小跟系统平台有关
var i1 uint = 1 // 有符号内存大小跟系统平台有关
var i2 byte = 255 // 字节类型, 内存大小为1字节
fmt.Println(i,i1,i2)
}
整型的使用细节
1. int uint 的内存大小与系统有关;
2. Go 整型默认声明为 int 类型
3. 在保证程序正确运行的情况下,尽量使用占用空间小的数据类型
package main
import "fmt"
func main(){
// 默认类型为int
var n = 100
// 格式化输出
fmt.Printf("n1 的类型为 %T \n,n) // %T 为类型
// 使用占用空间小的数据类型
var age byte = 21
fmt.Println(age)
}
##### 小数类型
小数类型是用来存储小数的,如: 1.1,2.2,3.1414;
类型 |
占用存储空间 |
表数范围 |
单精度float32 |
4字节 |
-3.403E38~3.403E38 |
双精度float64 |
8字节 |
-1.798E308~1.798E308 |
package main
import "fmt"
func main(){
var a float32 = 12.3
var a1 float32 = -0.01
var a2 float64 = -0.02
fmt.Println(a,a1,a2)
var a3 float32 = 1.00000088
var a4 float32 = 1231.1111111
var a5 float32 = 11231.1111111
fmt.Println(a3) //1.0000008,尾数部分丢失, 精度损失
fmt.Println(a4) //1231.1111,尾数部分丢失, 精度损失
fmt.Println(a5) //11231.111,尾数部分丢失, 精度损失
}
小数型使用细节
1. Go 浮点类型有固定的范围和字段长度,不受具体的系统影响;
2. Go 默认浮点类型为float64;
3. 开发中推荐使用float64;
4. 浮点类型常量两种表示方式;
4.1 十进制数形式: 0.1415926 可以写为: .1415926(***必须有小数点***);
4.2 科学计数法: 0.14e2 表示 0.14 *10 的2次方 = 14;
4.3 科学计数法: 0.14e-2 表示 0.14 / 10的2次方 = 0.0014;
##### 字符类型
Go 中没有专门的字符类型,如要存储单个字符(字母) ,一般使用byte 保存;
字符串就是一串固定长度的字符连接起来的字符序列,Go 的字符串由单个字节连接一起的,传统的字符串由字符组成,而Go 的字符串由字节组成 ;
package main
import "fmt"
func main(){
// 字节使用单引号表示
var c byte = 'a'
fmt.Println(c) // 直接打印byte 值,输出的是该字节对应的unicode码值
// 输出对应的字符需要格式化
fmt.Printf("%c\n",c)
// overflow 溢出
//var c1 byte = '您'
var c1 int = '您'
fmt.Printf("c1=%c c1 对应的码值为%d\n",c1,c1)
}
字符类型使用细节
1. 如果保存的是ASCII 表的字符[0-9,a-z,A-Z],可以直接使用byte;
2. 如果保存的字符对应的码值大于255(byte 表示最大数为255=int8),可以考虑表示范围大的类型;
3. 如果想输出字符,需要格式化输出fmt.Printf("%c",c);
4. 字符常量是用单引号表示的单个字符;
5. Go 中允许使用转义字符'\'将其后的字符转变成特殊字符类型: 如: var c byte = '\n' 表示一个换行符;
6. Go 使用UTF-8 编码: 一个英文字母为1字节,一个汉字为3字节;
7. 字符类型可以参与运算: 相当于一个整数
package main
import "fmt"
func main(){
var a byte = 'a'
fmt.Println(10+a) // 107 = 10 + 97
}
--------------最近在同步更新微信公众号: "开胃咸菜", 大家可以关注交流
Go 变量及基本数据类型2的更多相关文章
- 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型
[源码下载] 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 常量 变量 基本 ...
- Python编程从入门到实践笔记——变量和简单数据类型
Python编程从入门到实践笔记——变量和简单数据类型 #coding=gbk #变量 message_1 = 'aAa fff' message_2 = 'hart' message_3 = &qu ...
- javaScript的注释、变量和基本数据类型
上一级写了javaScript是用来操作文档对象元素的,这一次带大家看看javaScriput的注释.变量和基本数据类型. 1.注释:注释是什么呢?注释其实就是阻止浏览器解析某一行或者多行代码或描述的 ...
- Java 变量及基本数据类型
1.Java变量 1.1 变量的概念 内存中开辟的一块存储空间,用于存放运算过程中需要用到的数据: 该区域有自己的名称(变量名)和类型(数据类型): 该区域的数据可以在同一类型范围内不断变化: 1) ...
- Flutter学习笔记(3)--Dart变量与基本数据类型
一.变量 在Dart里面,变量的声明使用var.Object或Dynamic关键字,如下所示: var name = ‘张三’: 在Dart语言里一切皆为对象,所以如果没有将变量初始化,那么它的默认值 ...
- Python入门 .变量 常量 基础数据类型 用户输入 流程控制语句 小练习题
# 2.name = input(“>>>”)通过代码来验证name变量是什么数据类型?--str name = input(">>>") pr ...
- Python变量与基本数据类型
Python变量与基本数据类型 前言 好了,从本章开始将正式进入Python的学习阶段.本章主要介绍的是Python变量与基本数据类型的认识,这些都是最基本的知识并且必须要牢靠掌握在心中. 注释 学习 ...
- Go 变量及基本数据类型3
#### Go 变量及基本数据类型(三)今天学习一下剩下的两个基本数据类型(布尔类型,字符串类型)以及基本数据类型的相互转换##### 布尔类型布尔类型也称为bool 类型, bool 类型只允许取值 ...
- Go 变量及基本数据类型1
#### Go 变量及基本数据类型(一)今天主要学习一下Go 中的变量及基本数据类型: 如何申明,使用变量,以及基本数据类型的介绍和使用细节; ##### 变量的介绍1. 变量相当于内存中一个数据存储 ...
随机推荐
- Windows系统CMD命令bat脚本编写
复制文件(/y 表示不提示确认框,/-y 表示提示是否覆盖确认) echo "复制文件" copy /y D:\apache-zookeeper-3.6.3.tar.gz E:\l ...
- JAVA提取字符串中所有的URL链接,并加上a标签
工具类 Patterns.java 1 package com.util; 2 3 import java.util.regex.Matcher; 4 import java.util.regex.P ...
- UDP&串口调试助手用法(3)
发送参数配置 下面以 UDP 通道为例介绍 发送数据配置 概览 选择数据源 文件: 选择发送的文件 源码: 自己手动键入发送数据,默认输入的为16进制数据, 定时器发送周期 单位为毫秒. 发送帧计数 ...
- sigslot之简化版
1.关于 1.1 基于原版sigslot做了部分修改.原版的信号支持最多支持8个参数,改进后,最多支持1个参数,这样肯定不能满足日常需求,但是,我们可以将信号的一个参数改为类型指针,比如信号定义时的模 ...
- 【LeetCode】1007. Minimum Domino Rotations For Equal Row 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 遍历一遍 日期 题目地址:https://leetc ...
- 【九度OJ】题目1017:还是畅通工程 解题报告
[九度OJ]题目1017:还是畅通工程 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1017 题目描述: 某省调查乡村交通 ...
- 【剑指Offer】05. 替换空格 解题报告 (Python & C++ & Java)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人微信公众号:负雪明烛 目录 题目描述 解题方法 方法一:新建可变长度的容器 方法二:原 ...
- 【LeetCode】848. Shifting Letters 解题报告(Python)
[LeetCode]848. Shifting Letters 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http ...
- 对XSS的插入的新了解,灵感来自天驿安全
此次针对的是通过Get请求进行插入的XSS语句,或者dom型的xss,也算是了解到的新的插入方式 首先,JavaScript语言中存在拼接性 可以通过代审后闭合前置语句进行self测试是否可以拼接 s ...
- JUC之线程间的通信
线程通信 视频1: 2021.12.18 JUC视频学习片段 对上次多线程编程步骤补充(中部): 创建资源类,在资源类中创建属性和操作方法 在资源类里面操作 判断 干活 通知 创建多个线程,调用资源类 ...