golang中int int8 int16 int32 int64 uint8 uint16 uint32 uint64 占用字节和取值范围

本文主要是介绍golang中int int8 int16 int32 int64 uint8 uint16 uint32 uint64 占用字节和取值范围,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

================================
go grpc-go 相关技术专栏 总入口

go语言基础知识总结、整理、收藏

================================

本次测试的环境是Mac系统下,CPU 64位。

注意:
go语言中的int的大小是和操作系统位数相关的;

  • 如果是32位操作系统,int类型的大小就是4字节;
  • 如果是64位操作系统,int类型的大小就是8个字节

1、测试不同int类型占用字节数大小

1.1、测试有符号int类型

import ("testing""unsafe""math""fmt"
)func TestIntSize(t *testing.T) {fmt.Println("不同int类型占用的字节数大小:")var i1 int = 1var i2 int8 = 2var i3 int16 = 3var i4 int32 = 4var i5 int64 = 5fmt.Printf("int    : %v\n", unsafe.Sizeof(i1))fmt.Printf("int8   : %v\n", unsafe.Sizeof(i2))fmt.Printf("int16  : %v\n", unsafe.Sizeof(i3))fmt.Printf("int32  : %v\n", unsafe.Sizeof(i4))fmt.Printf("int64  : %v\n", unsafe.Sizeof(i5))
}

测试结果:

int    : 8
int8   : 1
int16  : 2
int32  : 4
int64  : 8

1.2、测试无符号int类型

func TestUIntSize(t *testing.T) {fmt.Println("不同无符号int类型占用的字节数大小:")var i1 uint = 1var i2 uint8 = 2var i3 uint16 = 3var i4 uint32 = 4var i5 uint64 = 5fmt.Printf("uint    : %v\n", unsafe.Sizeof(i1))fmt.Printf("uint8   : %v\n", unsafe.Sizeof(i2))fmt.Printf("uint16  : %v\n", unsafe.Sizeof(i3))fmt.Printf("uint32  : %v\n", unsafe.Sizeof(i4))fmt.Printf("uint64  : %v\n", unsafe.Sizeof(i5))
}

测试结果:

uint    : 8
uint8   : 1
uint16  : 2
uint32  : 4
uint64  : 8

2、测试不同int类型的取值范围

2.1、测试有符号int情况

func TestIntRange(t *testing.T) {// 不同int类型的取值范围fmt.Println("不同int类型的取值范围:")//fmt.Println("int:", math.MinInt, "~", math.MaxInt) 报错,没有 math.MinInt math.MaxIntfmt.Println("int8:", math.MinInt8, "~", math.MaxInt8)fmt.Println("int16:", math.MinInt16, "~", math.MaxInt16)fmt.Println("int32:", math.MinInt32, "~", math.MaxInt32)fmt.Println("int64:", math.MinInt64, "~", math.MaxInt64)fmt.Println()
}

测试结果:

不同int类型的取值范围:
int8: -128 ~ 127
int16: -32768 ~ 32767
int32: -2147483648 ~ 2147483647
int64: -9223372036854775808 ~ 9223372036854775807

2.2、 测试无符号不同int类型的取值范围

func TestUintRange(t *testing.T) {fmt.Println("uint8:", 0, "~", math.MaxUint8)fmt.Println("uint16:", 0, "~", math.MaxUint16)fmt.Println("uint32:", 0, "~", math.MaxUint32)//fmt.Println("uint64:", 0, "~", math.MaxUint64)fmt.Println()
}

测试结果

=== RUN   TestUintRange
uint8: 0 ~ 255
uint16: 0 ~ 65535
uint32: 0 ~ 4294967295--- PASS: TestUintRange (0.00s)
PASS

这篇关于golang中int int8 int16 int32 int64 uint8 uint16 uint32 uint64 占用字节和取值范围的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1054322

相关文章

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述。以下是从不同角度对气象站的种类和应用范围的介绍: 一、气象站的种类 根据用途和安装环境分类: 农业气象站:专为农业生产服务,监测土壤温度、湿度等参数,为农业生产提供科学依据。交通气象站:用于公路、铁路、机场等交通场所的气象监测,提供实时气象数据以支持交通运营和调度。林业气象站:监测林区风速、湿度、温度等气象要素,为林区保护和

tomcat端口被占用如何解决

转载:https://www.cnblogs.com/demon09/p/9248445.html

Java——IO流(一)-(5/8):IO流概述、字节流-FileInputStream 每次读取一个字节

IO流概述 介绍 输入输出流,用于读写数据。 I指Input,称为输入流:负责把数据读到内存中去。 O指Output,称为输出流:负责写数据出去。 IO流的应用场景 文件内容的读写永久保存应用数据复制粘贴对话通信等等 怎么学IO流 理清楚IO六点分类和体系循序渐进、深入学习每个IO流的作用和用法 IO流的分类 IO流总体来看就有四大类: 字节输入流:以内存

Java代理-动态字节码生成代理的5种方式

上篇讲到了代理模式出现的原因,实现方式以及跟其他相似设计模式的区别。传送门@_@ http://blog.csdn.net/wonking666/article/details/79497547 1.静态代理的不足 设计模式里面的代理模式,代理类是需要手动去写的。但是手写代理的问题颇多 1.如果不同类型的目标对象需要执行同样一套代理的逻辑,比如说在方法调用前后打印参数和结果,那么仍然需要为每

Linux平台与Windows平台字节对齐(一)

记录时间:2014-10-20 20:31 今天白天在整理 winndows平台 + Arm平台的网络数据包。但期间由于经验不足,不了解两平台CPU架构的差距会影响到数据类型的大小,导致在工程非常紧急的时间里还浪费了很多宝贵的时间,鉴于问题的常见性 和 隐秘行,特此列出,以便能帮助需要帮助的人。 解决问题思路:在遇到网络交互数据不对时,可以从如下四方面去排除问题,通常只要使用这三种

Linux float int和16进制互相转换

Linux 上float int和16进制互换操作。之前把float转16进制,也就是转成4个字节,方便使用串口传输嘛。使用的方法是: //float 转 16进制float x_pid_p = 15.0;unsigned char * bValue = (unsigned char *)& x_pid_p;printf("%x\t%x\t%x\t%x\n", bValue[0], bVa

字符串到字节数组和字节数组到字符串的转换(编码和解码问题)

/*  * String(byte[] bytes, String charsetName):通过指定的字符集解码字节数组  * byte[] getBytes(String charsetName):使用指定的字符集合把字符串编码为字节数组  *  * 编码:把看得懂的变成看不懂的  * String -- byte[]  *  * 解码:把看不懂的变成看得懂的

java文件流之copy文件(用一次读取一个字节数组方式)

package fileoutputstream;import java.io.FileInputStream;import java.io.FileOutputStream;public class CopyFileDemo {public static void main(String[] args) throws Exception {//封装数据源FileInputStream fis

JavaIO流之创建字节输出流的2中方式

package fileoutputstream;import java.io.File;import java.io.FileOutputStream;public class FileOutputStreamDemo {public static void main(String[] args) throws Exception {//创建字节输出流对象方式1// FileO

http请求获取到的网页源码是字节数组还是字符串?

http请求获取到的网页源码是字节数组,并不是字符串。只有识别了网页所用的编码,例如utf8,将字节数组根据编码的规则, 进行解码,才可以获得网页源码的字符串。编码是将字符串转换为字节数组的过程,解码是将字节数组转换成字符串的过程。