基本概念
Solidity中关于数据类型的定义如下:
(资料图片)
Solidity是一种静态类型语言,这意味着每个变量都需要在编译时指定变量的类型;
Solidity中新声明的变量总是有一个默认值,具体的默认值跟类型有关,例如bool类型的默认值为false。
数据类型
值类型
Solidity提供的基本数据类型。这些类型的变量总是通过值传递的,变量在函数参数或赋值语句中使用时都会被复制。有以下几类值类型的数据类型:
布尔类型
bool
:可接受 true
和 false
两个值,默认为 false
。
整型
int
和 uint
:分别表示有符号和无符号的整数,默认为0。支持关键字 int8
到 int256
,以及 uint8
到 uint256
,从8位到256位,以8位为步长递增,int
和 uint
分别是 int256
和 uint256
的别名。
地址类型
address
:包含一个20字节的值(代表一个以太坊地址的大小)。一个地址可以用来获取余额,也可以通过转账的方式来转移余额。
字节类型
bytes1
,bytes2
,...,bytes32
:字节用于存储固定大小的字符集,长度范围是1 ~ 32。字节的一个优点是它使用更少的Gas,所以当我们知道数据的长度时,最好使用它。
字符串类型
string
:字符串用于存储等于或大于一个字节的字符集,字符串的长度是动态的。
枚举类型
enum
:创建用户定义的数据类型,用于为一个整型常量分配一个名称,这使得合约具有可读性、可维护性和更不容易出错。枚举的选项可以用从0开始的无符号整数值表示。
语法如下:
enum <enum_name> { element 1, element 2, ..., element n }
引用类型
引用类型变量存储数据的位置。在引用类型的定义中,两个不同的变量可以引用同一个位置,其中一个变量的任何更改都会影响另一个变量。引用类型包括数组、结构和映射。关于引用类型,我们将在后面的课程中单独介绍。
合约例子
例子1
基本数据类型的声明与用法。
输出:我们在Remix中编译、部署和运行上面的合约例子,执行结果如下图:
例子2
枚举类型的声明及用法。
输出:我们在Remix中编译、部署和运行上面的合约例子,执行结果如下图: