Solidity 是 Ethereum 智能合约开发的核心语言,其数据类型设计直接影响合约的存储效率与逻辑实现。以下是 Solidity 支持的主要数据类型及其用途说明:


🔢 基本数据类型

布尔类型 (bool)

  • 仅支持 truefalse
  • 示例:bool isApproved = true;

整数类型 (int, uint)

  • Signed Integers (int): 可表示正负值,如 int myNumber = -10;
  • Unsigned Integers (uint): 仅非负值,如 uint256 balance = 100;
  • 特殊类型:
    • byte (1字节)
    • address (20字节,用于以太坊地址)
    • string (动态长度文本)
integer_types

浮点数类型 (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 账户地址相关操作 ⭐⭐⭐⭐⭐
data_type_comparison

🚀 扩展阅读

如需深入理解 Solidity 类型系统,请查看 Solidity 数据类型详解高级类型应用指南