在坚固性中使用"mapping"的好处或主要原因是什么?



我是一个初学者。我正在学习固体中的映射。我对为什么要使用映射感到困惑?

例如,下面是我看到的映射示例:

contract TestContract {
struct Buyer {
bytes32 name;
uint price;
}
mapping(address => Buyer) buyerInfo;
}

它似乎试图使用地址来获取在struct中定义的买方信息。但是,如果我在struct中创建一个新的地址类型成员,那么似乎就不需要使用映射的概念了。

contract TestContract2 {
struct Buyer {
address addr;
bytes32 name;
uint price;
}
}

有人能解释一下使用映射的好处或主要原因吗?

contract TestContract {
struct Buyer {
bytes32 name;
uint price;
}
mapping(address => Buyer) buyerInfo;
Buyerp[] buyerInfoList; // array
function testFunc() {
// Map: we can access easily
Buyer bb = buyerInfo[msg.sender];
// Array: we need for loop to access it
for(uint i = 0;i<buyerInfoList.length;i++) {
if(buyerInfoList[i].address == msg.sender) {
Buyer bb = buyerInfo[i];
}
}


}
}

并且,在坚固性下,map的数据是私有的,因此,任何人都不能在没有密钥的情况下扩展其数据。

,如果我们知道key,我们可以很容易地访问它的值(一行)。