Solidity 是 Ethereum 智能合约开发的核心语言,其数据类型设计直接影响合约的存储效率与逻辑实现。以下是 Solidity 支持的主要数据类型及其用途说明:
🔢 基本数据类型
布尔类型 (bool
)
- 仅支持
true
和false
- 示例:
bool isApproved = true;
整数类型 (int
, uint
)
- Signed Integers (
int
): 可表示正负值,如int myNumber = -10;
- Unsigned Integers (
uint
): 仅非负值,如uint256 balance = 100;
- 特殊类型:
byte
(1字节)address
(20字节,用于以太坊地址)string
(动态长度文本)
浮点数类型 (fixed
, ufixed
)
- 用于精确计算,如
fixed rate = 0.05;
- 语法:
fixed<MxN>
表示 M 位整数和 N 位小数
🏗️ 复合数据类型
结构体 (struct
)
- 自定义数据集合
- 示例:
struct User { string name; uint age; } User public user = User("Alice", 30);
- 了解更多结构体用法
枚举 (enum
)
- 预定义常量集合
- 示例:
enum Status { Active, Inactive, Pending } Status public state = Status.Active;
📦 数组与映射
数组 (array
)
- 固定长度:
uint[10]
(10个元素) - 动态长度:
string[]
(可变长度) - 示例:
string[] public names = ["Alice", "Bob"];
映射 (mapping
)
- 键值对集合,如
mapping(address => uint) public balances;
- 非常适合存储账户余额、用户状态等数据
🧠 类型选择建议
类型 | 适用场景 | 存储效率 |
---|---|---|
uint256 |
需要大整数的合约逻辑 | ⭐⭐⭐⭐⭐ |
string |
需要动态文本的场景 | ⭐⭐⭐ |
bytes |
二进制数据处理 | ⭐⭐⭐⭐ |
address |
账户地址相关操作 | ⭐⭐⭐⭐⭐ |
🚀 扩展阅读
如需深入理解 Solidity 类型系统,请查看 Solidity 数据类型详解 或 高级类型应用指南。