golang基础(2)基础类型

栏目: Go · 发布时间: 5年前

内容简介:在开始之前,先补充一下上一次分享的内容,是不可以重复为变量 foo 初始化赋值的。我是一名 web 前端出身的 developer,接触最早也是接触最多还是 javascript ,所以学习任何其他新的语言我都喜欢给 javascript 对比地来学。在 javascript 数据类型中对于数值只有 number 类型也就是 float 类型,而在 go 语言却进行相当细致的划分数值类型,应该是为了效率,节省内存空间吧。更准确地为变量分配内存空间。关于这些数据类型,我就不做过多解释 int 代表整数型,后面

基本类型

在开始之前,先补充一下上一次分享的内容,是不可以重复为变量 foo 初始化赋值的。

foo := 'hello'
foo := "world"

我是一名 web 前端出身的 developer,接触最早也是接触最多还是 javascript ,所以学习任何其他新的语言我都喜欢给 javascript 对比地来学。在 javascript 数据类型中对于数值只有 number 类型也就是 float 类型,而在 go 语言却进行相当细致的划分数值类型,应该是为了效率,节省内存空间吧。更准确地为变量分配内存空间。

int8
int16
int32
int64

float32
float64

关于这些数据类型,我就不做过多解释 int 代表整数型,后面 8 代表的占内存大小也是就是这个数据类型的取值范围,int8 的取值范围为 -128 到 128 之间。

这两类型为一些算法会用到,complex64 为两个 float32 组合,complex128 则为两个 float64 的组合

complex64
complex128

一种无符号的整数类型 uintptr,用于保存内存地址,没有指定具体的 bit 大小但是足以容纳指针。uintptr 类型只有在底层编程是才需要,特别是 Go 语言和 C 语言函数库或操作系统接口相交互的地方。

uintptr

Unicode字符rune类型是和 int32 等价的类型,便于表示一个 Unicode 字符同样byte也是 uint8 类型的等价类型,byte 类型一般用于强调数值是一个原始的数据而不是一个小的整数。

byte //  unit8 的别名
rune // int32 的别名

当然还有表示正整数的类型 unit8 前面 u 代表无符号,也就是默认为正那么 unit8 的取值范围就是 0 - 255

unit8
uint16

当然还有默认的没有位数的 int 和 unit,这么多数据类型,让我们感觉到 javascript 对 developer 的贴心。

int
unit

下面介绍一些在给指定数据类型的变量赋值的一些注意事项分别是 overflow 和 underflow

var x:unit8 = 255
x = x + 1 //0 (overflow)

x = 255
x = x + 3 // 2 (overflow)

x = 0
x = x - 1 // 255 (underflow)

x = 4
x = x - 10 // 250 (underflow)

当我们为类型为 unit8 (取值范围0 -255)赋值 255 然后为变量加1后重新为 x 赋值时,这是 x = 256 超出了 unit8 的取值范围,在这种情况编译器会将 x = 0 这就是 overflow 情况也就是变量值溢出了其类型取值范围。

同样对于 underflow 情况当 x = 0 时然后对 x 进行减 1 后重新赋值会得到 x = 255 结果。

有关 float 类型的 overflow 和 underflow 因为精度比较复杂,以后随着深入学习再给大家解释,在此暂时忽略。

var foo int64 = 5;
var bar int32 = 7;
foo = bar; // compile error

不同类型数据是无法相互赋值,我们不能把 int32 类型的 bar 直接赋值给 int64 类型的 foo,需要进行类型转换后进行赋值。

var foo int64 = 5;
var bar int32 = 7;
foo = (int64)bar; // 类型转换

同理,不同类型的变量是无法进行运算的也需要转为同一类型后才可以进行运算。

var foo int64 = 5
var bar int32 = 7
foo = bar +foo; //comile error
var foo int64 = 5
var bar int32 = 7
foo = (int64)bar +foo;

注意的这里 int 类型并不等于 unit8 而且直接赋值给 unit8 类型 bar 需要类型转换,由于 overflow 的原因转换类型后其值也会从 500 变为 244

var foo int = 500
var bar uint8 = uint8(foo); //244

当我们使用 := 对变量初始化赋值时,需要注意其默认的数据类型分别 int 和 float64.

bar := 7 //var bar int = 7
foo := 7.3; //var foo float64 = 7.3
var foo int32 = 5;
var bar int = 7;
bar = foo; // int 和int32 通常是不同的类型

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

计算几何

计算几何

奥罗克 / 机械工业 / 2005-4 / 49.00元

本书介绍了在计算机图形学、机器人和工业设计领域逐渐兴起的几何算法的设计和实现。计算几何中使用的基本技术包括多边形三角剖分、凸包、Voronoi图、排列、几何查找、运动计划等。虽然自主处理只涉及数学基础知识领域的一部分,但是它却和当今该研究领域的前沿课题相关。因此,专业的程序员会发现本书是一本不可多得的参考书。   与上一版相比,本版包括以下几方面的新内容:多边形三角剖分的随机化算法、平面点定......一起来看看 《计算几何》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具