Go语言学习 十四 基本数据类型

本文最初发表在我的个人博客,查看原文,获得更好的阅读体验


类型确定一组值以及特定于这些值的操作和方法。类型可以由类型名称表示(如果有的话),或者使用类型字面量指定,则类型名称由现有类型组成。

可以使用类型字面量构造复合类型-数组结构指针函数接口切片映射信道类型。

每个类型T都有一个基础类型:如果T是预先声明的布尔,数字或字符串类型之一,或者是类型字面量,则相应的基础类型是T本身。否则,T的底层类型是T在其类型声明中引用的类型的基础类型。

一 布尔类型

布尔类型是由预先声明的常量truefalse表示的布尔真值集。预声明的布尔类型是bool;它是一个已定义的类型。

var x bool // fasle
y := true  // y类型为布尔

二 数字类型

数字类型表示整数或浮点数的集合。预声明的与架构无关的数字类型是:

uint8       所有无符号8-bit整数(0 - 255)
uint16      所有无符号16-bit整数(0 - 65535)
uint32      所有无符号32-bit整数(0 - 4294967295)
uint64      所有无符号64-bit整数(0 - 18446744073709551615)

int8        所有有符号8-bit整数(-128 - 127)
int16       所有有符号16-bit整数(-32768 - 32767)
int32       所有有符号32-bit整数(-2147483648 - 2147483647)
int64       所有有符号64-bit整数(-9223372036854775808 - 9223372036854775807)

float32     所有IEEE-754 32-bit浮点数
float64     所有IEEE-754 64-bit浮点数

complex64   所有复数集合,包含 float32 实部和虚部
complex128  所有复数集合,包含 float64 实部和虚部

byte        uint8的别名
rune        int32的别名

int8, int16, int32, int64 分别对应于Java中的byte, short, int, long

还有一组具有特定于实现的大小的预声明的数字类型:

uint     32 或 64 位
int      32 或 64 位
uintptr  无符号整数,足以存储指针值的未解释位

为了避免可移植性问题,所有数字类型都是已定义的类型,除了byteuint8的别名)和runeint32的别名)。在表达式或赋值中混合使用不同的数字类型时,需要显式转换。例如,int32int是不同的类型,即使它们在特定系统架构上可能具有相同的大小。

var x uint32  // 0
y := 6        // int
var z int     // 0
var m int16   // 0
var n = 3.141 // float64

三 字符串类型

字符串类型表示字符串值的集合。字符串值(可能为空)是字节序列,字节数称为字符串的长度,并且不为负。字符串是不可变的:一旦创建,就不能修改其内容,预声明的字符串类型为string。如果字符串是常量,则长度是编译时常量。字符串的字节可以使用整数索引0~len(s)-1来访问,但这种索引元素不可以通过地址访问:如果s[i]是字符串的第i个字节,则&s[i]无效。

var str = "hello, world."
s := `another string.`

无类型常量的默认类型分别是bool,rune,int,float64,complex128或string,具体取决于它是布尔值,符文,整数,浮点数,复数还是字符串常量。

参考:
https://golang.org/ref/spec#Types

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值