在以太坊智能合约的世界里,数据存储是核心环节,而 mapping(映射)作为一种极其重要且常用的数据结构,为我们提供了一种高效、灵活的方式来组织和检索键值对数据,理解 mapping 的工作原理和应用场景,对于编写高效、实用的智能合约至关重要。

什么是 Mapping?

以太坊的 mapping 就是一种键(key)到值(value)的存储映射,类似于许多编程语言中的字典(Dictionary)、哈希表(Hash Map)或关联数组(Associative Array),它允许你根据一个特定的键(通常是整数、地址、字节串等)来快速查找、存储和关联一个对应的值。

其基本语法结构如下:

mapping(_KeyType => _ValueType) public mappingName;
  • _KeyType:键的类型,可以是任何基本数据类型,如 uint, int, address, bytes32, bool 等,但不能是复杂的类型如 mapping, struct, array(但可以是这些类型的 bytes32 哈希值)。
  • _ValueType:值的类型,可以是任何类型,包括 mappingstruct,这使得 mapping随机配图